aboutsummaryrefslogtreecommitdiff
path: root/fs/cifs/dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/cifs/dir.c')
-rw-r--r--fs/cifs/dir.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
index 6cdf23fd70e..8ca70b102b9 100644
--- a/fs/cifs/dir.c
+++ b/fs/cifs/dir.c
@@ -376,7 +376,7 @@ out:
return rc;
}
-struct file *
+int
cifs_atomic_open(struct inode *inode, struct dentry *direntry,
struct opendata *od, unsigned oflags, umode_t mode,
int *opened)
@@ -403,15 +403,15 @@ cifs_atomic_open(struct inode *inode, struct dentry *direntry,
if (!(oflags & O_CREAT)) {
struct dentry *res = cifs_lookup(inode, direntry, NULL);
if (IS_ERR(res))
- return ERR_CAST(res);
+ return PTR_ERR(res);
finish_no_open(od, res);
- return NULL;
+ return 1;
}
rc = check_name(direntry);
if (rc)
- return ERR_PTR(rc);
+ return rc;
xid = GetXid();
@@ -428,13 +428,12 @@ cifs_atomic_open(struct inode *inode, struct dentry *direntry,
rc = cifs_do_create(inode, direntry, xid, tlink, oflags, mode,
&oplock, &fileHandle, opened);
- if (rc) {
- filp = ERR_PTR(rc);
+ if (rc)
goto out;
- }
filp = finish_open(od, direntry, generic_file_open, opened);
if (IS_ERR(filp)) {
+ rc = PTR_ERR(filp);
CIFSSMBClose(xid, tcon, fileHandle);
goto out;
}
@@ -443,14 +442,14 @@ cifs_atomic_open(struct inode *inode, struct dentry *direntry,
if (pfile_info == NULL) {
CIFSSMBClose(xid, tcon, fileHandle);
fput(filp);
- filp = ERR_PTR(-ENOMEM);
+ rc = -ENOMEM;
}
out:
cifs_put_tlink(tlink);
free_xid:
FreeXid(xid);
- return filp;
+ return rc;
}
int cifs_create(struct inode *inode, struct dentry *direntry, umode_t mode,