]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
binderfs: use simple_start_creating()
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 9 May 2024 03:07:22 +0000 (23:07 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 16 Nov 2025 06:35:04 +0000 (01:35 -0500)
binderfs_binder_device_create() gets simpler, binderfs_create_dentry() simply
goes away...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
drivers/android/binderfs.c

index be8e64eb39ec510a38051c2c630a24684cbbc898..a7b0a773d47f556dafaed775d7e08bd21a35e37f 100644 (file)
@@ -183,24 +183,11 @@ static int binderfs_binder_device_create(struct inode *ref_inode,
        }
 
        root = sb->s_root;
-       inode_lock(d_inode(root));
-
-       /* look it up */
-       dentry = lookup_noperm(&QSTR(name), root);
+       dentry = simple_start_creating(root, name);
        if (IS_ERR(dentry)) {
-               inode_unlock(d_inode(root));
                ret = PTR_ERR(dentry);
                goto err;
        }
-
-       if (d_really_is_positive(dentry)) {
-               /* already exists */
-               dput(dentry);
-               inode_unlock(d_inode(root));
-               ret = -EEXIST;
-               goto err;
-       }
-
        inode->i_private = device;
        d_instantiate(dentry, inode);
        fsnotify_create(root->d_inode, dentry);
@@ -481,24 +468,6 @@ static struct inode *binderfs_make_inode(struct super_block *sb, int mode)
        return ret;
 }
 
-static struct dentry *binderfs_create_dentry(struct dentry *parent,
-                                            const char *name)
-{
-       struct dentry *dentry;
-
-       dentry = lookup_noperm(&QSTR(name), parent);
-       if (IS_ERR(dentry))
-               return dentry;
-
-       /* Return error if the file/dir already exists. */
-       if (d_really_is_positive(dentry)) {
-               dput(dentry);
-               return ERR_PTR(-EEXIST);
-       }
-
-       return dentry;
-}
-
 struct dentry *binderfs_create_file(struct dentry *parent, const char *name,
                                    const struct file_operations *fops,
                                    void *data)
@@ -508,11 +477,10 @@ struct dentry *binderfs_create_file(struct dentry *parent, const char *name,
        struct super_block *sb;
 
        parent_inode = d_inode(parent);
-       inode_lock(parent_inode);
 
-       dentry = binderfs_create_dentry(parent, name);
+       dentry = simple_start_creating(parent, name);
        if (IS_ERR(dentry))
-               goto out;
+               return dentry;
 
        sb = parent_inode->i_sb;
        new_inode = binderfs_make_inode(sb, S_IFREG | 0444);
@@ -540,11 +508,10 @@ static struct dentry *binderfs_create_dir(struct dentry *parent,
        struct super_block *sb;
 
        parent_inode = d_inode(parent);
-       inode_lock(parent_inode);
 
-       dentry = binderfs_create_dentry(parent, name);
+       dentry = simple_start_creating(parent, name);
        if (IS_ERR(dentry))
-               goto out;
+               return dentry;
 
        sb = parent_inode->i_sb;
        new_inode = binderfs_make_inode(sb, S_IFDIR | 0755);