diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2016-05-29 19:14:03 -0400 | 
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2016-05-29 19:14:03 -0400 | 
| commit | ea7d4c046ba6e2c6135c98721f4f09efd1adaabc (patch) | |
| tree | 9b73f35e92a566f6005e241e3e99fb13392c1f17 /fs/binfmt_misc.c | |
| parent | 84c60b1388249a0167d5fe8160f84e66a1221ba8 (diff) | |
binfmt_misc: ->s_root is not going anywhere
... no need to dget/dput it.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/binfmt_misc.c')
| -rw-r--r-- | fs/binfmt_misc.c | 12 | 
1 files changed, 4 insertions, 8 deletions
| diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c index 3a3ced779fc7..5417516f6e59 100644 --- a/fs/binfmt_misc.c +++ b/fs/binfmt_misc.c @@ -637,13 +637,12 @@ static ssize_t bm_entry_write(struct file *file, const char __user *buffer,  		break;  	case 3:  		/* Delete this handler. */ -		root = dget(file->f_path.dentry->d_sb->s_root); +		root = file_inode(file)->i_sb->s_root;  		inode_lock(d_inode(root));  		kill_node(e);  		inode_unlock(d_inode(root)); -		dput(root);  		break;  	default:  		return res; @@ -665,8 +664,8 @@ static ssize_t bm_register_write(struct file *file, const char __user *buffer,  {  	Node *e;  	struct inode *inode; -	struct dentry *root, *dentry; -	struct super_block *sb = file->f_path.dentry->d_sb; +	struct super_block *sb = file_inode(file)->i_sb; +	struct dentry *root = sb->s_root, *dentry;  	int err = 0;  	e = create_entry(buffer, count); @@ -674,7 +673,6 @@ static ssize_t bm_register_write(struct file *file, const char __user *buffer,  	if (IS_ERR(e))  		return PTR_ERR(e); -	root = dget(sb->s_root);  	inode_lock(d_inode(root));  	dentry = lookup_one_len(e->name, root, strlen(e->name));  	err = PTR_ERR(dentry); @@ -712,7 +710,6 @@ out2:  	dput(dentry);  out:  	inode_unlock(d_inode(root)); -	dput(root);  	if (err) {  		kfree(e); @@ -753,14 +750,13 @@ static ssize_t bm_status_write(struct file *file, const char __user *buffer,  		break;  	case 3:  		/* Delete all handlers. */ -		root = dget(file->f_path.dentry->d_sb->s_root); +		root = file_inode(file)->i_sb->s_root;  		inode_lock(d_inode(root));  		while (!list_empty(&entries))  			kill_node(list_entry(entries.next, Node, list));  		inode_unlock(d_inode(root)); -		dput(root);  		break;  	default:  		return res; | 
