Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
  [CIFS] Fix sparse warning
  [CIFS] Duplicate data on appending to some Samba servers
  [CIFS] fix oops in cifs_lookup during net boot
This commit is contained in:
Linus Torvalds 2009-11-30 14:51:01 -08:00
commit 99d7832c0e
2 changed files with 12 additions and 5 deletions

View File

@ -1,3 +1,12 @@
Version 1.61
------------
Fix append problem to Samba servers (files opened with O_APPEND could
have duplicated data). Fix oops in cifs_lookup. Workaround problem
mounting to OS/400 Netserve. Fix oops in cifs_get_tcp_session.
Disable use of server inode numbers when server only
partially supports them (e.g. for one server querying inode numbers on
FindFirst fails but QPathInfo queries works).
Version 1.60 Version 1.60
------------- -------------
Fix memory leak in reconnect. Fix oops in DFS mount error path. Fix memory leak in reconnect. Fix oops in DFS mount error path.

View File

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