Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bf349a44 authored by Al Viro's avatar Al Viro
Browse files

spufs: shift dget/mntget towards dentry_open()



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 3b6456d2
Loading
Loading
Loading
Loading
+18 −28
Original line number Diff line number Diff line
@@ -323,22 +323,21 @@ static int spufs_context_open(struct dentry *dentry, struct vfsmount *mnt)
	struct file *filp;

	ret = get_unused_fd();
	if (ret < 0) {
		dput(dentry);
		mntput(mnt);
		goto out;
	}
	if (ret < 0)
		return ret;

	filp = dentry_open(dentry, mnt, O_RDONLY, current_cred());
	/*
	 * get references for dget and mntget, will be released
	 * in error path of *_open().
	 */
	filp = dentry_open(dget(dentry), mntget(mnt), O_RDONLY, current_cred());
	if (IS_ERR(filp)) {
		put_unused_fd(ret);
		ret = PTR_ERR(filp);
		goto out;
		return PTR_ERR(filp);
	}

	filp->f_op = &spufs_context_fops;
	fd_install(ret, filp);
out:
	return ret;
}

@@ -495,11 +494,7 @@ spufs_create_context(struct inode *inode, struct dentry *dentry,
			put_spu_context(neighbor);
	}

	/*
	 * get references for dget and mntget, will be released
	 * in error path of *_open().
	 */
	ret = spufs_context_open(dget(dentry), mntget(mnt));
	ret = spufs_context_open(dentry, mnt);
	if (ret < 0) {
		WARN_ON(spufs_rmdir(inode, dentry));
		if (affinity)
@@ -562,22 +557,21 @@ static int spufs_gang_open(struct dentry *dentry, struct vfsmount *mnt)
	struct file *filp;

	ret = get_unused_fd();
	if (ret < 0) {
		dput(dentry);
		mntput(mnt);
		goto out;
	}
	if (ret < 0)
		return ret;

	filp = dentry_open(dentry, mnt, O_RDONLY, current_cred());
	/*
	 * get references for dget and mntget, will be released
	 * in error path of *_open().
	 */
	filp = dentry_open(dget(dentry), mntget(mnt), O_RDONLY, current_cred());
	if (IS_ERR(filp)) {
		put_unused_fd(ret);
		ret = PTR_ERR(filp);
		goto out;
		return PTR_ERR(filp);
	}

	filp->f_op = &simple_dir_operations;
	fd_install(ret, filp);
out:
	return ret;
}

@@ -591,11 +585,7 @@ static int spufs_create_gang(struct inode *inode,
	if (ret)
		goto out;

	/*
	 * get references for dget and mntget, will be released
	 * in error path of *_open().
	 */
	ret = spufs_gang_open(dget(dentry), mntget(mnt));
	ret = spufs_gang_open(dentry, mnt);
	if (ret < 0) {
		int err = simple_rmdir(inode, dentry);
		WARN_ON(err);