• Alexander Aring's avatar
    fs: dlm: fix configfs memory leak · 3d2825c8
    Alexander Aring authored
    This patch fixes the following memory detected by kmemleak and umount
    gfs2 filesystem which removed the last lockspace:
    
    unreferenced object 0xffff9264f482f600 (size 192):
      comm "dlm_controld", pid 325, jiffies 4294690276 (age 48.136s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 6e 6f 64 65 73 00 00 00  ........nodes...
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<00000000060481d7>] make_space+0x41/0x130
        [<000000008d905d46>] configfs_mkdir+0x1a2/0x5f0
        [<00000000729502cf>] vfs_mkdir+0x155/0x210
        [<000000000369bcf1>] do_mkdirat+0x6d/0x110
        [<00000000cc478a33>] do_syscall_64+0x33/0x40
        [<00000000ce9ccf01>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    The patch just remembers the "nodes" entry pointer in space as I think
    it's created as subdirectory when parent "spaces" is created. In
    function drop_space() we will lost the pointer reference to nds because
    configfs_remove_default_groups(). However as this subdirectory is always
    available when "spaces" exists it will just be freed when "spaces" will be
    freed.
    Signed-off-by: default avatarAlexander Aring <aahringo@redhat.com>
    Signed-off-by: default avatarDavid Teigland <teigland@redhat.com>
    3d2825c8
config.c 22.4 KB