Initialize d_fsdata in advance to avoid warnings when recycling dentry due to inode allocation failures. Fixes: 2558e3b23112 ("libfs: add stashed_dentry_prune()") Reported-and-tested-by: syzbot+9b5ec5ccf7234cc6cb86@xxxxxxxxxxxxxxxxxxxxxxxxx Signed-off-by: Edward Adam Davis <eadavis@xxxxxx> --- fs/libfs.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fs/libfs.c b/fs/libfs.c index 0d14ae808fcf..67dc503272eb 100644 --- a/fs/libfs.c +++ b/fs/libfs.c @@ -2013,6 +2013,8 @@ static struct dentry *prepare_anon_dentry(struct dentry **stashed, 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) { dput(dentry); @@ -2029,9 +2031,6 @@ static struct dentry *prepare_anon_dentry(struct dentry **stashed, 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; -- 2.43.0