<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/fs/dlm/config.c, branch v4.9.331</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v4.9.331</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v4.9.331'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2021-07-20T14:21:00+00:00</updated>
<entry>
<title>fs: dlm: fix memory leak when fenced</title>
<updated>2021-07-20T14:21:00+00:00</updated>
<author>
<name>Alexander Aring</name>
<email>aahringo@redhat.com</email>
</author>
<published>2021-06-02T13:45:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=cfcb65adb1a31116138de932bdf98dc4ca71b536'/>
<id>urn:sha1:cfcb65adb1a31116138de932bdf98dc4ca71b536</id>
<content type='text'>
[ Upstream commit 700ab1c363c7b54c9ea3222379b33fc00ab02f7b ]

I got some kmemleak report when a node was fenced. The user space tool
dlm_controld will therefore run some rmdir() in dlm configfs which was
triggering some memleaks. This patch stores the sps and cms attributes
which stores some handling for subdirectories of the configfs cluster
entry and free them if they get released as the parent directory gets
freed.

unreferenced object 0xffff88810d9e3e00 (size 192):
  comm "dlm_controld", pid 342, jiffies 4294698126 (age 55438.801s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 73 70 61 63 65 73 00 00  ........spaces..
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [&lt;00000000db8b640b&gt;] make_cluster+0x5d/0x360
    [&lt;000000006a571db4&gt;] configfs_mkdir+0x274/0x730
    [&lt;00000000b094501c&gt;] vfs_mkdir+0x27e/0x340
    [&lt;0000000058b0adaf&gt;] do_mkdirat+0xff/0x1b0
    [&lt;00000000d1ffd156&gt;] do_syscall_64+0x40/0x80
    [&lt;00000000ab1408c8&gt;] entry_SYSCALL_64_after_hwframe+0x44/0xae
unreferenced object 0xffff88810d9e3a00 (size 192):
  comm "dlm_controld", pid 342, jiffies 4294698126 (age 55438.801s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 63 6f 6d 6d 73 00 00 00  ........comms...
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [&lt;00000000a7ef6ad2&gt;] make_cluster+0x82/0x360
    [&lt;000000006a571db4&gt;] configfs_mkdir+0x274/0x730
    [&lt;00000000b094501c&gt;] vfs_mkdir+0x27e/0x340
    [&lt;0000000058b0adaf&gt;] do_mkdirat+0xff/0x1b0
    [&lt;00000000d1ffd156&gt;] do_syscall_64+0x40/0x80
    [&lt;00000000ab1408c8&gt;] entry_SYSCALL_64_after_hwframe+0x44/0xae

Signed-off-by: Alexander Aring &lt;aahringo@redhat.com&gt;
Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>fs: dlm: fix configfs memory leak</title>
<updated>2020-10-29T08:05:43+00:00</updated>
<author>
<name>Alexander Aring</name>
<email>aahringo@redhat.com</email>
</author>
<published>2020-08-27T19:02:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=1532860788764e0e29eed664fec39142140ad999'/>
<id>urn:sha1:1532860788764e0e29eed664fec39142140ad999</id>
<content type='text'>
[ 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:
    [&lt;00000000060481d7&gt;] make_space+0x41/0x130
    [&lt;000000008d905d46&gt;] configfs_mkdir+0x1a2/0x5f0
    [&lt;00000000729502cf&gt;] vfs_mkdir+0x155/0x210
    [&lt;000000000369bcf1&gt;] do_mkdirat+0x6d/0x110
    [&lt;00000000cc478a33&gt;] do_syscall_64+0x33/0x40
    [&lt;00000000ce9ccf01&gt;] 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 &lt;aahringo@redhat.com&gt;
Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>dlm: add log_info config option</title>
<updated>2016-06-21T14:04:24+00:00</updated>
<author>
<name>Zhilong Liu</name>
<email>zlliu@suse.com</email>
</author>
<published>2016-06-20T04:52:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=505ee5283c3d23220dfbf7630bfc4efdc391e743'/>
<id>urn:sha1:505ee5283c3d23220dfbf7630bfc4efdc391e743</id>
<content type='text'>
This config option can be used to disable the
LOG_INFO recovery messages.

Signed-off-by: Zhilong Liu &lt;zlliu@suse.com&gt;
Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
</content>
</entry>
<entry>
<title>dlm: config: Fix ENOMEM failures in make_cluster()</title>
<updated>2016-03-29T15:28:08+00:00</updated>
<author>
<name>Andrew Price</name>
<email>anprice@redhat.com</email>
</author>
<published>2016-03-22T17:36:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=82c7d823cc31cf56d964eebe1f91aaf1691cddce'/>
<id>urn:sha1:82c7d823cc31cf56d964eebe1f91aaf1691cddce</id>
<content type='text'>
Commit 1ae1602de0 "configfs: switch -&gt;default groups to a linked list"
left the NULL gps pointer behind after removing the kcalloc() call which
made it non-NULL. It also left the !gps check in place so make_cluster()
now fails with ENOMEM. Remove the remaining uses of the gps variable to
fix that.

Reviewed-by: Bob Peterson &lt;rpeterso@redhat.com&gt;
Reviewed-by: Andreas Gruenbacher &lt;agruenba@redhat.com&gt;
Signed-off-by: Andrew Price &lt;anprice@redhat.com&gt;
Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
</content>
</entry>
<entry>
<title>configfs: switch -&gt;default groups to a linked list</title>
<updated>2016-03-06T15:11:24+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2016-02-26T10:02:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=1ae1602de028acaa42a0f6ff18d19756f8e825c6'/>
<id>urn:sha1:1ae1602de028acaa42a0f6ff18d19756f8e825c6</id>
<content type='text'>
Replace the current NULL-terminated array of default groups with a linked
list.  This gets rid of lots of nasty code to size and/or dynamically
allocate the array.

While we're at it also provide a conveniant helper to remove the default
groups.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Acked-by: Felipe Balbi &lt;balbi@kernel.org&gt;		[drivers/usb/gadget]
Acked-by: Joel Becker &lt;jlbec@evilplan.org&gt;
Acked-by: Nicholas Bellinger &lt;nab@linux-iscsi.org&gt;
Reviewed-by: Sagi Grimberg &lt;sagig@mellanox.com&gt;
</content>
</entry>
<entry>
<title>dlm: use per-attribute show and store methods</title>
<updated>2015-10-14T05:16:18+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2015-10-03T13:32:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=9ae0f367df5d0d7be09fad1e2e5b080f6a45ca6b'/>
<id>urn:sha1:9ae0f367df5d0d7be09fad1e2e5b080f6a45ca6b</id>
<content type='text'>
To simplify the configfs interface and remove boilerplate code that also
causes binary bloat.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: David Teigland &lt;teigland@redhat.com
Signed-off-by: Nicholas Bellinger &lt;nab@linux-iscsi.org&gt;
</content>
</entry>
<entry>
<title>fs/dlm/config.c: convert simple_str to kstr</title>
<updated>2014-06-06T23:08:17+00:00</updated>
<author>
<name>Fabian Frederick</name>
<email>fabf@skynet.be</email>
</author>
<published>2014-06-06T21:38:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=4f4c337fb7fb946824a26e78e37b85ef25e0a4a2'/>
<id>urn:sha1:4f4c337fb7fb946824a26e78e37b85ef25e0a4a2</id>
<content type='text'>
Replace obsolete functions

simple_strtoul/kstrtouint
simple_strtol/kstrtoint
(kstr __must_check requires the right function to be applied)

Signed-off-by: Fabian Frederick &lt;fabf@skynet.be&gt;
Cc: Christine Caulfield &lt;ccaulfie@redhat.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>dlm: config: using strlcpy instead of strncpy</title>
<updated>2013-06-25T17:53:06+00:00</updated>
<author>
<name>Zhao Hongjiang</name>
<email>zhaohongjiang@huawei.com</email>
</author>
<published>2013-06-20T10:59:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=ad917e7f821855a2f223131bb6c90ca6c9240bf3'/>
<id>urn:sha1:ad917e7f821855a2f223131bb6c90ca6c9240bf3</id>
<content type='text'>
for NUL terminated string, need alway set '\0' in the end.

Signed-off-by: Zhao Hongjiang &lt;zhaohongjiang@huawei.com&gt;
Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
</content>
</entry>
<entry>
<title>fs: change return values from -EACCES to -EPERM</title>
<updated>2013-02-26T07:46:14+00:00</updated>
<author>
<name>Zhao Hongjiang</name>
<email>zhaohongjiang@huawei.com</email>
</author>
<published>2013-02-20T02:13:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=41735818766c0ec215b9a69591e7eae642061954'/>
<id>urn:sha1:41735818766c0ec215b9a69591e7eae642061954</id>
<content type='text'>
According to SUSv3:

[EACCES] Permission denied. An attempt was made to access a file in a way
forbidden by its file access permissions.

[EPERM] Operation not permitted. An attempt was made to perform an operation
limited to processes with appropriate privileges or to the owner of a file
or other resource.

So -EPERM should be returned if capability checks fails.

Strictly speaking this is an API change since the error code user sees is
altered.

Signed-off-by: Zhao Hongjiang &lt;zhaohongjiang@huawei.com&gt;
Acked-by: Jan Kara &lt;jack@suse.cz&gt;
Acked-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
Acked-by: Ian Kent &lt;raven@themaw.net&gt;
Cc: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>dlm: fix deadlock between dlm_send and dlm_controld</title>
<updated>2012-08-08T16:33:35+00:00</updated>
<author>
<name>David Teigland</name>
<email>teigland@redhat.com</email>
</author>
<published>2012-07-26T17:44:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=36b71a8bfbc92e1ba164e9aec840c0180ee933b5'/>
<id>urn:sha1:36b71a8bfbc92e1ba164e9aec840c0180ee933b5</id>
<content type='text'>
A deadlock sometimes occurs between dlm_controld closing
a lowcomms connection through configfs and dlm_send looking
up the address for a new connection in configfs.

dlm_controld does a configfs rmdir which calls
dlm_lowcomms_close which waits for dlm_send to
cancel work on the workqueues.

The dlm_send workqueue thread has called
tcp_connect_to_sock which calls dlm_nodeid_to_addr
which does a configfs lookup and blocks on a lock
held by dlm_controld in the rmdir path.

The solution here is to save the node addresses within
the lowcomms code so that the lowcomms workqueue does
not need to step through configfs to get a node address.

dlm_controld:
wait_for_completion+0x1d/0x20
__cancel_work_timer+0x1b3/0x1e0
cancel_work_sync+0x10/0x20
dlm_lowcomms_close+0x4c/0xb0 [dlm]
drop_comm+0x22/0x60 [dlm]
client_drop_item+0x26/0x50 [configfs]
configfs_rmdir+0x180/0x230 [configfs]
vfs_rmdir+0xbd/0xf0
do_rmdir+0x103/0x120
sys_rmdir+0x16/0x20

dlm_send:
mutex_lock+0x2b/0x50
get_comm+0x34/0x140 [dlm]
dlm_nodeid_to_addr+0x18/0xd0 [dlm]
tcp_connect_to_sock+0xf4/0x2d0 [dlm]
process_send_sockets+0x1d2/0x260 [dlm]
worker_thread+0x170/0x2a0

Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
</content>
</entry>
</feed>
