From: Ilya Dryomov Date: Wed, 26 Feb 2020 15:37:55 +0000 (+0100) Subject: libceph: simplify ceph_monc_handle_map() X-Git-Tag: v5.7-rc1~39^2~28 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4d8b8fb4940a46f8d64bf1f9d116e1d2ae32b01c;p=thirdparty%2Fkernel%2Flinux.git libceph: simplify ceph_monc_handle_map() ceph_monc_handle_map() confuses static checkers which report a false use-after-free on monc->monmap, missing that monc->monmap and client->monc.monmap is the same pointer. Use monc->monmap consistently and get rid of "old", which is redundant. Signed-off-by: Ilya Dryomov --- diff --git a/net/ceph/mon_client.c b/net/ceph/mon_client.c index 9d9e4e4ea600e..3d8c8015e976f 100644 --- a/net/ceph/mon_client.c +++ b/net/ceph/mon_client.c @@ -467,7 +467,7 @@ static void ceph_monc_handle_map(struct ceph_mon_client *monc, struct ceph_msg *msg) { struct ceph_client *client = monc->client; - struct ceph_monmap *monmap = NULL, *old = monc->monmap; + struct ceph_monmap *monmap; void *p, *end; mutex_lock(&monc->mutex); @@ -484,13 +484,13 @@ static void ceph_monc_handle_map(struct ceph_mon_client *monc, goto out; } - if (ceph_check_fsid(monc->client, &monmap->fsid) < 0) { + if (ceph_check_fsid(client, &monmap->fsid) < 0) { kfree(monmap); goto out; } - client->monc.monmap = monmap; - kfree(old); + kfree(monc->monmap); + monc->monmap = monmap; __ceph_monc_got_map(monc, CEPH_SUB_MONMAP, monc->monmap->epoch); client->have_fsid = true;