binderfs: use simple_start_creating()

binderfs_binder_device_create() gets simpler, binderfs_create_dentry() simply
goes away...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2024-05-08 23:07:22 -04:00
parent b4a76faf9d
commit 185d241c88
1 changed files with 5 additions and 38 deletions

View File

@ -183,24 +183,11 @@ static int binderfs_binder_device_create(struct inode *ref_inode,
} }
root = sb->s_root; root = sb->s_root;
inode_lock(d_inode(root)); dentry = simple_start_creating(root, name);
/* look it up */
dentry = lookup_noperm(&QSTR(name), root);
if (IS_ERR(dentry)) { if (IS_ERR(dentry)) {
inode_unlock(d_inode(root));
ret = PTR_ERR(dentry); ret = PTR_ERR(dentry);
goto err; 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; inode->i_private = device;
d_instantiate(dentry, inode); d_instantiate(dentry, inode);
fsnotify_create(root->d_inode, dentry); fsnotify_create(root->d_inode, dentry);
@ -481,24 +468,6 @@ static struct inode *binderfs_make_inode(struct super_block *sb, int mode)
return ret; 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, struct dentry *binderfs_create_file(struct dentry *parent, const char *name,
const struct file_operations *fops, const struct file_operations *fops,
void *data) void *data)
@ -508,11 +477,10 @@ struct dentry *binderfs_create_file(struct dentry *parent, const char *name,
struct super_block *sb; struct super_block *sb;
parent_inode = d_inode(parent); 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)) if (IS_ERR(dentry))
goto out; return dentry;
sb = parent_inode->i_sb; sb = parent_inode->i_sb;
new_inode = binderfs_make_inode(sb, S_IFREG | 0444); 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; struct super_block *sb;
parent_inode = d_inode(parent); 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)) if (IS_ERR(dentry))
goto out; return dentry;
sb = parent_inode->i_sb; sb = parent_inode->i_sb;
new_inode = binderfs_make_inode(sb, S_IFDIR | 0755); new_inode = binderfs_make_inode(sb, S_IFDIR | 0755);