Commit 50bed2c9 authored by Pavel Shilovsky's avatar Pavel Shilovsky

Update 3.0 sources from stable (v3.0.27)

parent a0811b14
...@@ -3027,7 +3027,7 @@ cifs_get_volume_info(char *mount_data, const char *devname) ...@@ -3027,7 +3027,7 @@ cifs_get_volume_info(char *mount_data, const char *devname)
int int
cifs_mount(struct cifs_sb_info *cifs_sb, struct smb_vol *volume_info) cifs_mount(struct cifs_sb_info *cifs_sb, struct smb_vol *volume_info)
{ {
int rc = 0; int rc;
int xid; int xid;
struct cifs_ses *pSesInfo; struct cifs_ses *pSesInfo;
struct cifs_tcon *tcon; struct cifs_tcon *tcon;
...@@ -3056,6 +3056,7 @@ try_mount_again: ...@@ -3056,6 +3056,7 @@ try_mount_again:
FreeXid(xid); FreeXid(xid);
} }
#endif #endif
rc = 0;
tcon = NULL; tcon = NULL;
pSesInfo = NULL; pSesInfo = NULL;
srvTcp = NULL; srvTcp = NULL;
......
...@@ -587,10 +587,26 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry, ...@@ -587,10 +587,26 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
* If either that or op not supported returned, follow * If either that or op not supported returned, follow
* the normal lookup. * the normal lookup.
*/ */
if ((rc == 0) || (rc == -ENOENT)) switch (rc) {
case 0:
/*
* The server may allow us to open things like
* FIFOs, but the client isn't set up to deal
* with that. If it's not a regular file, just
* close it and proceed as if it were a normal
* lookup.
*/
if (newInode && !S_ISREG(newInode->i_mode)) {
CIFSSMBClose(xid, pTcon, fileHandle);
break;
}
case -ENOENT:
posix_open = true; posix_open = true;
else if ((rc == -EINVAL) || (rc != -EOPNOTSUPP)) case -EOPNOTSUPP:
break;
default:
pTcon->broken_posix_open = true; pTcon->broken_posix_open = true;
}
} }
if (!posix_open) if (!posix_open)
rc = cifs_get_inode_info_unix(&newInode, full_path, rc = cifs_get_inode_info_unix(&newInode, full_path,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment