a255651d4cad ("ceph: ensure auth ops are defined before use") made kfree() in put_osd() conditional on the authorizer. A mechanical mistake most likely - fix it.
Unified · Split
| @@ -1035,10 +1035,11 @@ static void put_osd(struct ceph_osd *osd) · 1034 unmodified lines | ||
| 1035 | 1035 | { |
| 1036 | 1036 | dout("put_osd %p %d -> %d\n", osd, atomic_read(&osd->o_ref), |
| 1037 | 1037 | atomic_read(&osd->o_ref) - 1); |
| 1038 | − if (atomic_dec_and_test(&osd->o_ref) && osd->o_auth.authorizer) { | |
| 1038 | + if (atomic_dec_and_test(&osd->o_ref)) { | |
| 1039 | 1039 | struct ceph_auth_client *ac = osd->o_osdc->client->monc.auth; |
| 1040 | 1040 | |
| 1041 | − ceph_auth_destroy_authorizer(ac, osd->o_auth.authorizer); | |
| 1041 | + if (osd->o_auth.authorizer) | |
| 1042 | + ceph_auth_destroy_authorizer(ac, osd->o_auth.authorizer); | |
| 1042 | 1043 | kfree(osd); |
| 1043 | 1044 | } |
| 1044 | 1045 | } |