Commit 1eae9a47 authored by Al Viro's avatar Al Viro
Browse files

/proc/sys: use d_splice_alias() calling conventions to simplify failure exits



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 6f36230e
Loading
Loading
Loading
Loading
+2 −12
Original line number Diff line number Diff line
@@ -534,13 +534,8 @@ static struct dentry *proc_sys_lookup(struct inode *dir, struct dentry *dentry,
			goto out;
	}

	inode = proc_sys_make_inode(dir->i_sb, h ? h : head, p);
	if (IS_ERR(inode)) {
		err = ERR_CAST(inode);
		goto out;
	}

	d_set_d_op(dentry, &proc_sys_dentry_operations);
	inode = proc_sys_make_inode(dir->i_sb, h ? h : head, p);
	err = d_splice_alias(inode, dentry);

out:
@@ -698,13 +693,8 @@ static bool proc_sys_fill_cache(struct file *file,
			return false;
		if (d_in_lookup(child)) {
			struct dentry *res;
			inode = proc_sys_make_inode(dir->d_sb, head, table);
			if (IS_ERR(inode)) {
				d_lookup_done(child);
				dput(child);
				return false;
			}
			d_set_d_op(child, &proc_sys_dentry_operations);
			inode = proc_sys_make_inode(dir->d_sb, head, table);
			res = d_splice_alias(inode, child);
			d_lookup_done(child);
			if (unlikely(res)) {