diff options
Diffstat (limited to 'drivers/misc/cxl/api.c')
| -rw-r--r-- | drivers/misc/cxl/api.c | 22 | 
1 files changed, 4 insertions, 18 deletions
diff --git a/drivers/misc/cxl/api.c b/drivers/misc/cxl/api.c index 753b1a698fc4..8fd5ec4d6042 100644 --- a/drivers/misc/cxl/api.c +++ b/drivers/misc/cxl/api.c @@ -67,10 +67,8 @@ static struct file *cxl_getfile(const char *name,  				const struct file_operations *fops,  				void *priv, int flags)  { -	struct qstr this; -	struct path path;  	struct file *file; -	struct inode *inode = NULL; +	struct inode *inode;  	int rc;  	/* strongly inspired by anon_inode_getfile() */ @@ -91,27 +89,15 @@ static struct file *cxl_getfile(const char *name,  		goto err_fs;  	} -	file = ERR_PTR(-ENOMEM); -	this.name = name; -	this.len = strlen(name); -	this.hash = 0; -	path.dentry = d_alloc_pseudo(cxl_vfs_mount->mnt_sb, &this); -	if (!path.dentry) +	file = alloc_file_pseudo(inode, cxl_vfs_mount, name, +				 flags & (O_ACCMODE | O_NONBLOCK), fops); +	if (IS_ERR(file))  		goto err_inode; -	path.mnt = mntget(cxl_vfs_mount); -	d_instantiate(path.dentry, inode); - -	file = alloc_file(&path, OPEN_FMODE(flags), fops); -	if (IS_ERR(file)) -		goto err_dput; -	file->f_flags = flags & (O_ACCMODE | O_NONBLOCK);  	file->private_data = priv;  	return file; -err_dput: -	path_put(&path);  err_inode:  	iput(inode);  err_fs:  | 
