]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
xfs: eliminate lockdep false positives in xfs_attr_shortform_list
authorLong Li <leo.lilong@huawei.com>
Sat, 22 Jun 2024 08:26:31 +0000 (16:26 +0800)
committerCarlos Maiolino <cem@kernel.org>
Fri, 22 Nov 2024 08:52:03 +0000 (09:52 +0100)
xfs_attr_shortform_list() only called from a non-transactional context, it
hold ilock before alloc memory and maybe trapped in memory reclaim. Since
commit 204fae32d5f7("xfs: clean up remaining GFP_NOFS users") removed
GFP_NOFS flag, lockdep warning will be report as [1]. Eliminate lockdep
false positives by use __GFP_NOLOCKDEP to alloc memory
in xfs_attr_shortform_list().

[1] https://lore.kernel.org/linux-xfs/000000000000e33add0616358204@google.com/

Reported-by: syzbot+4248e91deb3db78358a2@syzkaller.appspotmail.com
Signed-off-by: Long Li <leo.lilong@huawei.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
fs/xfs/xfs_attr_list.c

index 7db38630487514d553facdc3421e37349c561e3d..379b48d015d2541d10618a7eab1db09e9e581270 100644 (file)
@@ -114,7 +114,8 @@ xfs_attr_shortform_list(
         * It didn't all fit, so we have to sort everything on hashval.
         */
        sbsize = sf->count * sizeof(*sbuf);
-       sbp = sbuf = kmalloc(sbsize, GFP_KERNEL | __GFP_NOFAIL);
+       sbp = sbuf = kmalloc(sbsize,
+                       GFP_KERNEL | __GFP_NOLOCKDEP | __GFP_NOFAIL);
 
        /*
         * Scan the attribute list for the rest of the entries, storing