<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers/dax/super.c, branch v5.15.208</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v5.15.208</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v5.15.208'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2022-04-08T12:23:31+00:00</updated>
<entry>
<title>dax: make sure inodes are flushed before destroy cache</title>
<updated>2022-04-08T12:23:31+00:00</updated>
<author>
<name>Tong Zhang</name>
<email>ztong0001@gmail.com</email>
</author>
<published>2022-02-12T07:11:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=e2951eaa9398415ac054b7bd80b8163b6838ead4'/>
<id>urn:sha1:e2951eaa9398415ac054b7bd80b8163b6838ead4</id>
<content type='text'>
[ Upstream commit a7e8de822e0b1979f08767c751f6c8a9c1d4ad86 ]

A bug can be triggered by following command

$ modprobe nd_pmem &amp;&amp; modprobe -r nd_pmem

[   10.060014] BUG dax_cache (Not tainted): Objects remaining in dax_cache on __kmem_cache_shutdown()
[   10.060938] Slab 0x0000000085b729ac objects=9 used=1 fp=0x000000004f5ae469 flags=0x200000000010200(slab|head|node)
[   10.062433] Call Trace:
[   10.062673]  dump_stack_lvl+0x34/0x44
[   10.062865]  slab_err+0x90/0xd0
[   10.063619]  __kmem_cache_shutdown+0x13b/0x2f0
[   10.063848]  kmem_cache_destroy+0x4a/0x110
[   10.064058]  __x64_sys_delete_module+0x265/0x300

This is caused by dax_fs_exit() not flushing inodes before destroy cache.
To fix this issue, call rcu_barrier() before destroy cache.

Signed-off-by: Tong Zhang &lt;ztong0001@gmail.com&gt;
Reviewed-by: Ira Weiny &lt;ira.weiny@intel.com&gt;
Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
Link: https://lore.kernel.org/r/20220212071111.148575-1-ztong0001@gmail.com
Fixes: 7b6be8444e0f ("dax: refactor dax-fs into a generic provider of 'struct dax_device' instances")
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>dax: remove bdev_dax_supported</title>
<updated>2021-08-26T23:52:03+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2021-08-26T13:55:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=bdd3c50d83bf7f6acc869b48d02670d19030ae03'/>
<id>urn:sha1:bdd3c50d83bf7f6acc869b48d02670d19030ae03</id>
<content type='text'>
All callers already have a dax_device obtained from fs_dax_get_by_bdev
at hand, so just pass that to dax_supported() insted of doing another
lookup.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Link: https://lore.kernel.org/r/20210826135510.6293-10-hch@lst.de
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
</content>
</entry>
<entry>
<title>dax: stub out dax_supported for !CONFIG_FS_DAX</title>
<updated>2021-08-26T23:52:03+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2021-08-26T13:55:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=60b8340f0d6587d7b51990689fcdae567f309fbf'/>
<id>urn:sha1:60b8340f0d6587d7b51990689fcdae567f309fbf</id>
<content type='text'>
dax_supported calls into -&gt;dax_supported which checks for fsdax support.
Don't bother building it for !CONFIG_FS_DAX as it will always return
false.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Link: https://lore.kernel.org/r/20210826135510.6293-8-hch@lst.de
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
</content>
</entry>
<entry>
<title>dax: remove __generic_fsdax_supported</title>
<updated>2021-08-26T23:52:03+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2021-08-26T13:55:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=cd93a2a4d1b076f5c73d70d836c202bbcbeea49e'/>
<id>urn:sha1:cd93a2a4d1b076f5c73d70d836c202bbcbeea49e</id>
<content type='text'>
Just implement generic_fsdax_supported directly out of line instead of
adding a wrapper.  Given that generic_fsdax_supported is only supplied
for CONFIG_FS_DAX builds this also allows to not provide it at all for
!CONFIG_FS_DAX builds.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Link: https://lore.kernel.org/r/20210826135510.6293-7-hch@lst.de
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
</content>
</entry>
<entry>
<title>dax: move the dax_read_lock() locking into dax_supported</title>
<updated>2021-08-26T23:52:03+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2021-08-26T13:55:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=673a0658f6ac359131a881c0dcf1b91c2500ab9c'/>
<id>urn:sha1:673a0658f6ac359131a881c0dcf1b91c2500ab9c</id>
<content type='text'>
Move the dax_read_lock/dax_read_unlock pair from the callers into
dax_supported to make it a little easier to use.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Link: https://lore.kernel.org/r/20210826135510.6293-6-hch@lst.de
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
</content>
</entry>
<entry>
<title>dax: mark dax_get_by_host static</title>
<updated>2021-08-26T23:52:03+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2021-08-26T13:55:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=1b7646014e0d838b06be7288e2dec3262948cc56'/>
<id>urn:sha1:1b7646014e0d838b06be7288e2dec3262948cc56</id>
<content type='text'>
And move the code around a bit to avoid a forward declaration.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Link: https://lore.kernel.org/r/20210826135510.6293-5-hch@lst.de
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
</content>
</entry>
<entry>
<title>dax: stop using bdevname</title>
<updated>2021-08-26T23:52:02+00:00</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2021-08-26T13:55:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=39b6389a7fdc0457d980a3ea1e77ca457402f477'/>
<id>urn:sha1:39b6389a7fdc0457d980a3ea1e77ca457402f477</id>
<content type='text'>
Just use the %pg format specifier instead.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Link: https://lore.kernel.org/r/20210826135510.6293-3-hch@lst.de
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
</content>
</entry>
<entry>
<title>dax: Ensure errno is returned from dax_direct_access</title>
<updated>2021-07-08T05:10:04+00:00</updated>
<author>
<name>Ira Weiny</name>
<email>ira.weiny@intel.com</email>
</author>
<published>2021-05-25T17:24:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=b05d4c576b697b9f462b9c532c997171d5c3b067'/>
<id>urn:sha1:b05d4c576b697b9f462b9c532c997171d5c3b067</id>
<content type='text'>
If the caller specifies a negative nr_pages that is an invalid
parameter.

Return -EINVAL to ensure callers get an errno if they want to check it.

Reviewed-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Signed-off-by: Ira Weiny &lt;ira.weiny@intel.com&gt;
Link: https://lore.kernel.org/r/20210525172428.3634316-4-ira.weiny@intel.com
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
</content>
</entry>
<entry>
<title>whack-a-mole: don't open-code iminor/imajor</title>
<updated>2021-02-23T15:25:29+00:00</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2021-02-01T00:23:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=6f24784f00f2b5862b367caeecc5cca22a77faa3'/>
<id>urn:sha1:6f24784f00f2b5862b367caeecc5cca22a77faa3</id>
<content type='text'>
several instances creeped back into the tree...

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>device-dax/core: Fix memory leak when rmmod dax.ko</title>
<updated>2020-12-16T06:03:52+00:00</updated>
<author>
<name>Wang Hai</name>
<email>wanghai38@huawei.com</email>
</author>
<published>2020-12-01T13:59:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=1aa574312518ef1d60d2dc62d58f7021db3b163a'/>
<id>urn:sha1:1aa574312518ef1d60d2dc62d58f7021db3b163a</id>
<content type='text'>
When I repeatedly modprobe and rmmod dax.ko, kmemleak report a
memory leak as follows:

unreferenced object 0xffff9a5588c05088 (size 8):
  comm "modprobe", pid 261, jiffies 4294693644 (age 42.063s)
...
  backtrace:
    [&lt;00000000e007ced0&gt;] kstrdup+0x35/0x70
    [&lt;000000002ae73897&gt;] kstrdup_const+0x3d/0x50
    [&lt;000000002b00c9c3&gt;] kvasprintf_const+0xbc/0xf0
    [&lt;000000008023282f&gt;] kobject_set_name_vargs+0x3b/0xd0
    [&lt;00000000d2cbaa4e&gt;] kobject_set_name+0x62/0x90
    [&lt;00000000202e7a22&gt;] bus_register+0x7f/0x2b0
    [&lt;000000000b77792c&gt;] 0xffffffffc02840f7
    [&lt;000000002d5be5ac&gt;] 0xffffffffc02840b4
    [&lt;00000000dcafb7cd&gt;] do_one_initcall+0x58/0x240
    [&lt;00000000049fe480&gt;] do_init_module+0x56/0x1e2
    [&lt;0000000022671491&gt;] load_module+0x2517/0x2840
    [&lt;000000001a2201cb&gt;] __do_sys_finit_module+0x9c/0xe0
    [&lt;000000003eb304e7&gt;] do_syscall_64+0x33/0x40
    [&lt;0000000051c5fd06&gt;] entry_SYSCALL_64_after_hwframe+0x44/0xa9

When rmmod dax is executed, dax_bus_exit() is missing. This patch
can fix this bug.

Fixes: 9567da0b408a ("device-dax: Introduce bus + driver model")
Cc: &lt;stable@vger.kernel.org&gt;
Reported-by: Hulk Robot &lt;hulkci@huawei.com&gt;
Signed-off-by: Wang Hai &lt;wanghai38@huawei.com&gt;
Link: https://lore.kernel.org/r/20201201135929.66530-1-wanghai38@huawei.com
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
</content>
</entry>
</feed>
