Re: [syzbot] [fs?] WARNING in stashed_dentry_prune

From: Hillf Danton
Date: Wed Mar 13 2024 - 08:42:32 EST


On Wed, 13 Mar 2024 03:23:25 -0700
> syzbot found the following issue on:
>
> HEAD commit: 0f1a876682f0 Merge tag 'vfs-6.9.uuid' of git://git.kernel...
> git tree: upstream
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=116b38d1180000

#syz test https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master

--- x/fs/libfs.c
+++ y/fs/libfs.c
@@ -2012,6 +2012,8 @@ static struct dentry *prepare_anon_dentr
dentry = d_alloc_anon(sb);
if (!dentry)
return ERR_PTR(-ENOMEM);
+ /* Store address of location where dentry's supposed to be stashed. */
+ dentry->d_fsdata = stashed;

inode = new_inode_pseudo(sb);
if (!inode) {
@@ -2029,9 +2031,6 @@ static struct dentry *prepare_anon_dentr
WARN_ON_ONCE(!S_ISREG(inode->i_mode));
WARN_ON_ONCE(!IS_IMMUTABLE(inode));

- /* Store address of location where dentry's supposed to be stashed. */
- dentry->d_fsdata = stashed;
-
/* @data is now owned by the fs */
d_instantiate(dentry, inode);
return dentry;
--