d_alloc_pseudo(): move setting ->d_op there from the (sole) caller
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 12 Nov 2023 05:04:46 +0000 (00:04 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 25 Nov 2023 07:49:38 +0000 (02:49 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/dcache.c
fs/file_table.c

index 6c520eda131fb59cf465dd05b2ae383406a7408a..5947556b6e90c0ba57a009480e4404a83578d566 100644 (file)
@@ -1890,9 +1890,15 @@ struct dentry *d_alloc_cursor(struct dentry * parent)
  */
 struct dentry *d_alloc_pseudo(struct super_block *sb, const struct qstr *name)
 {
+       static const struct dentry_operations anon_ops = {
+               .d_dname = simple_dname
+       };
        struct dentry *dentry = __d_alloc(sb, name);
-       if (likely(dentry))
+       if (likely(dentry)) {
                dentry->d_flags |= DCACHE_NORCU;
+               if (!sb->s_d_op)
+                       d_set_d_op(dentry, &anon_ops);
+       }
        return dentry;
 }
 
index de4a2915bfd4941281915be92ce7dbdd8f67ac3b..8889cbee13f8b36b48a25756cc77bb3daedd1186 100644 (file)
@@ -329,9 +329,6 @@ struct file *alloc_file_pseudo(struct inode *inode, struct vfsmount *mnt,
                                const char *name, int flags,
                                const struct file_operations *fops)
 {
-       static const struct dentry_operations anon_ops = {
-               .d_dname = simple_dname
-       };
        struct qstr this = QSTR_INIT(name, strlen(name));
        struct path path;
        struct file *file;
@@ -339,8 +336,6 @@ struct file *alloc_file_pseudo(struct inode *inode, struct vfsmount *mnt,
        path.dentry = d_alloc_pseudo(mnt->mnt_sb, &this);
        if (!path.dentry)
                return ERR_PTR(-ENOMEM);
-       if (!mnt->mnt_sb->s_d_op)
-               d_set_d_op(path.dentry, &anon_ops);
        path.mnt = mntget(mnt);
        d_instantiate(path.dentry, inode);
        file = alloc_file(&path, flags, fops);