diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2018-06-09 16:45:56 +0300 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2018-07-12 17:04:25 +0300 |
commit | 908f7ca1731142e49e802b0277e94853cd772a8d (patch) | |
tree | bed1a0259f78d4a7afba4a3d1e1e6ccf78b121ff | |
parent | 93dec2da7b2349f0b294bbb23244cac135f13b79 (diff) | |
download | linux-908f7ca1731142e49e802b0277e94853cd772a8d.tar.xz |
cxl_getfile(): switch to alloc_file_pseudo()
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | drivers/misc/cxl/api.c | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/drivers/misc/cxl/api.c b/drivers/misc/cxl/api.c index 0b5cb6cf91a0..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,22 +89,11 @@ 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, flags & (O_ACCMODE | O_NONBLOCK), fops); - if (IS_ERR(file)) { - path_put(&path); - goto err_fs; - } file->private_data = priv; return file; |