• Luis Henriques's avatar
    ceph: fix memory leak in ceph_cleanup_snapid_map() · c8d6ee01
    Luis Henriques authored
    kmemleak reports the following memory leak:
    
    unreferenced object 0xffff88821feac8a0 (size 96):
      comm "kworker/1:0", pid 17, jiffies 4294896362 (age 20.512s)
      hex dump (first 32 bytes):
        a0 c8 ea 1f 82 88 ff ff 00 c9 ea 1f 82 88 ff ff  ................
        00 00 00 00 00 00 00 00 00 01 00 00 00 00 ad de  ................
      backtrace:
        [<00000000b3ea77fb>] ceph_get_snapid_map+0x75/0x2a0
        [<00000000d4060942>] fill_inode+0xb26/0x1010
        [<0000000049da6206>] ceph_readdir_prepopulate+0x389/0xc40
        [<00000000e2fe2549>] dispatch+0x11ab/0x1521
        [<000000007700b894>] ceph_con_workfn+0xf3d/0x3240
        [<0000000039138a41>] process_one_work+0x24d/0x590
        [<00000000eb751f34>] worker_thread+0x4a/0x3d0
        [<000000007e8f0d42>] kthread+0xfb/0x130
        [<00000000d49bd1fa>] ret_from_fork+0x3a/0x50
    
    A kfree is missing while looping the 'to_free' list of ceph_snapid_map
    objects.
    
    Cc: stable@vger.kernel.org
    Fixes: 75c9627e ("ceph: map snapid to anonymous bdev ID")
    Signed-off-by: default avatarLuis Henriques <lhenriques@suse.com>
    Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
    Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
    c8d6ee01
snap.c 31.7 KB