|
@@ -214,8 +214,6 @@ int cifs_posix_open(char *full_path, struct inode **pinode,
|
|
|
posix_flags |= SMB_O_EXCL;
|
|
|
if (oflags & O_TRUNC)
|
|
|
posix_flags |= SMB_O_TRUNC;
|
|
|
- if (oflags & O_APPEND)
|
|
|
- posix_flags |= SMB_O_APPEND;
|
|
|
if (oflags & O_SYNC)
|
|
|
posix_flags |= SMB_O_SYNC;
|
|
|
if (oflags & O_DIRECTORY)
|
|
@@ -643,9 +641,9 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
|
|
|
* O_EXCL: optimize away the lookup, but don't hash the dentry. Let
|
|
|
* the VFS handle the create.
|
|
|
*/
|
|
|
- if (nd->flags & LOOKUP_EXCL) {
|
|
|
+ if (nd && (nd->flags & LOOKUP_EXCL)) {
|
|
|
d_instantiate(direntry, NULL);
|
|
|
- return 0;
|
|
|
+ return NULL;
|
|
|
}
|
|
|
|
|
|
/* can not grab the rename sem here since it would
|
|
@@ -675,7 +673,7 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
|
|
|
* reduction in network traffic in the other paths.
|
|
|
*/
|
|
|
if (pTcon->unix_ext) {
|
|
|
- if (!(nd->flags & (LOOKUP_PARENT | LOOKUP_DIRECTORY)) &&
|
|
|
+ if (nd && !(nd->flags & (LOOKUP_PARENT | LOOKUP_DIRECTORY)) &&
|
|
|
(nd->flags & LOOKUP_OPEN) && !pTcon->broken_posix_open &&
|
|
|
(nd->intent.open.flags & O_CREAT)) {
|
|
|
rc = cifs_posix_open(full_path, &newInode, nd->path.mnt,
|