static long do_spu_create(const char __user *pathname, unsigned int flags,
		umode_t mode, struct file *neighbor)
{
	struct path path;
	struct dentry *dentry;
	int ret;

	dentry = user_path_create(AT_FDCWD, pathname, &path, LOOKUP_DIRECTORY);
	ret = PTR_ERR(dentry);
	if (!IS_ERR(dentry)) {
		ret = spufs_create(&path, dentry, flags, mode, neighbor);
		done_path_create(&path, dentry);
	}

	return ret;
}
Esempio n. 2
0
static long do_spu_create(const char __user *pathname, unsigned int flags,
		umode_t mode, struct file *neighbor)
{
	struct path path;
	struct dentry *dentry;
	int ret;

	dentry = user_path_create(AT_FDCWD, pathname, &path, 1);
	ret = PTR_ERR(dentry);
	if (!IS_ERR(dentry)) {
		ret = spufs_create(&path, dentry, flags, mode, neighbor);
		mutex_unlock(&path.dentry->d_inode->i_mutex);
		dput(dentry);
		path_put(&path);
	}

	return ret;
}