aboutsummaryrefslogtreecommitdiffstats
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:
376 return rc; 376 return rc;
377} 377}
378 378
379struct file * 379int
380cifs_atomic_open(struct inode *inode, struct dentry *direntry, 380cifs_atomic_open(struct inode *inode, struct dentry *direntry,
381 struct opendata *od, unsigned oflags, umode_t mode, 381 struct opendata *od, unsigned oflags, umode_t mode,
382 int *opened) 382 int *opened)
@@ -403,15 +403,15 @@ cifs_atomic_open(struct inode *inode, struct dentry *direntry,
403 if (!(oflags & O_CREAT)) { 403 if (!(oflags & O_CREAT)) {
404 struct dentry *res = cifs_lookup(inode, direntry, NULL); 404 struct dentry *res = cifs_lookup(inode, direntry, NULL);
405 if (IS_ERR(res)) 405 if (IS_ERR(res))
406 return ERR_CAST(res); 406 return PTR_ERR(res);
407 407
408 finish_no_open(od, res); 408 finish_no_open(od, res);
409 return NULL; 409 return 1;
410 } 410 }
411 411
412 rc = check_name(direntry); 412 rc = check_name(direntry);
413 if (rc) 413 if (rc)
414 return ERR_PTR(rc); 414 return rc;
415 415
416 xid = GetXid(); 416 xid = GetXid();
417 417
@@ -428,13 +428,12 @@ cifs_atomic_open(struct inode *inode, struct dentry *direntry,
428 rc = cifs_do_create(inode, direntry, xid, tlink, oflags, mode, 428 rc = cifs_do_create(inode, direntry, xid, tlink, oflags, mode,
429 &oplock, &fileHandle, opened); 429 &oplock, &fileHandle, opened);
430 430
431 if (rc) { 431 if (rc)
432 filp = ERR_PTR(rc);
433 goto out; 432 goto out;
434 }
435 433
436 filp = finish_open(od, direntry, generic_file_open, opened); 434 filp = finish_open(od, direntry, generic_file_open, opened);
437 if (IS_ERR(filp)) { 435 if (IS_ERR(filp)) {
436 rc = PTR_ERR(filp);
438 CIFSSMBClose(xid, tcon, fileHandle); 437 CIFSSMBClose(xid, tcon, fileHandle);
439 goto out; 438 goto out;
440 } 439 }
@@ -443,14 +442,14 @@ cifs_atomic_open(struct inode *inode, struct dentry *direntry,
443 if (pfile_info == NULL) { 442 if (pfile_info == NULL) {
444 CIFSSMBClose(xid, tcon, fileHandle); 443 CIFSSMBClose(xid, tcon, fileHandle);
445 fput(filp); 444 fput(filp);
446 filp = ERR_PTR(-ENOMEM); 445 rc = -ENOMEM;
447 } 446 }
448 447
449out: 448out:
450 cifs_put_tlink(tlink); 449 cifs_put_tlink(tlink);
451free_xid: 450free_xid:
452 FreeXid(xid); 451 FreeXid(xid);
453 return filp; 452 return rc;
454} 453}
455 454
456int cifs_create(struct inode *inode, struct dentry *direntry, umode_t mode, 455int cifs_create(struct inode *inode, struct dentry *direntry, umode_t mode,