13296b64a8
[ Upstream commit 3d2825c8c6105b0f36f3ff72760799fa2e71420e ] 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: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org> |
||
---|---|---|
.. | ||
ast.c | ||
ast.h | ||
config.c | ||
config.h | ||
debug_fs.c | ||
dir.c | ||
dir.h | ||
dlm_internal.h | ||
Kconfig | ||
lock.c | ||
lock.h | ||
lockspace.c | ||
lockspace.h | ||
lowcomms.c | ||
lowcomms.h | ||
lvb_table.h | ||
main.c | ||
Makefile | ||
member.c | ||
member.h | ||
memory.c | ||
memory.h | ||
midcomms.c | ||
midcomms.h | ||
netlink.c | ||
plock.c | ||
rcom.c | ||
rcom.h | ||
recover.c | ||
recover.h | ||
recoverd.c | ||
recoverd.h | ||
requestqueue.c | ||
requestqueue.h | ||
user.c | ||
user.h | ||
util.c | ||
util.h |