Fix cifs bug in 2.6.35.13 with old Windows servers (#704125)

This commit is contained in:
Chuck Ebbert 2011-05-18 10:23:28 -04:00
parent cc37b46764
commit 6047d0e750
2 changed files with 43 additions and 1 deletions

View File

@ -0,0 +1,33 @@
From: Jeff Layton <jlayton@redhat.com>
Date: Tue, 17 May 2011 10:40:30 +0000 (-0400)
Subject: cifs: add fallback in is_path_accessible for old servers
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=221d1d797202984cb874e3ed9f1388593d34ee22
cifs: add fallback in is_path_accessible for old servers
The is_path_accessible check uses a QPathInfo call, which isn't
supported by ancient win9x era servers. Fall back to an older
SMBQueryInfo call if it fails with the magic error codes.
Cc: stable@kernel.org
Reported-and-Tested-by: Sandro Bonazzola <sandro.bonazzola@gmail.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
---
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 05f1dcf..277262a 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -2673,6 +2673,11 @@ is_path_accessible(int xid, struct cifsTconInfo *tcon,
0 /* not legacy */, cifs_sb->local_nls,
cifs_sb->mnt_cifs_flags &
CIFS_MOUNT_MAP_SPECIAL_CHR);
+
+ if (rc == -EOPNOTSUPP || rc == -EINVAL)
+ rc = SMBQueryInformation(xid, tcon, full_path, pfile_info,
+ cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
+ CIFS_MOUNT_MAP_SPECIAL_CHR);
kfree(pfile_info);
return rc;
}

View File

@ -849,6 +849,9 @@ Patch13964: x86-amd-fix-another-erratum-400-bug.patch
Patch13969: scsi_dh_hp_sw-fix-deadlock-in-start_stop_endio.patch
# fix bug in 2.6.35.13 with old windows servers
Patch13970: cifs-add-fallback-in-is_path_accessible-for-old-servers.patch
%endif
BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
@ -1597,6 +1600,9 @@ ApplyPatch x86-amd-fix-another-erratum-400-bug.patch
ApplyPatch scsi_dh_hp_sw-fix-deadlock-in-start_stop_endio.patch
# fix bug in 2.6.35.13 with old windows servers
ApplyPatch cifs-add-fallback-in-is_path_accessible-for-old-servers.patch
# END OF PATCH APPLICATIONS
%endif
@ -2183,11 +2189,14 @@ fi
# and build.
%changelog
* Wed May 18 2011 Chuck Ebbert <cebbert@redhat.com> 2.6.35.13-92
- Fix cifs bug in 2.6.35.13 with old Windows servers (#704125)
* Fri May 13 2011 Kyle McMartin <kmcmartin@redhat.com>
- [fabbione@] Fix a deadlock when using hp_sw with an HP san.
(7a1e9d82 upstream)
* Thu May 12 2011 Chuck Ebbert <cebbert@redhat.com> 2.6.35.13-92
* Thu May 12 2011 Chuck Ebbert <cebbert@redhat.com>
- Fix stalls on AMD machines with C1E caused by 2.6.35.13 (#704059)
* Tue May 03 2011 Chuck Ebbert <cebbert@redhat.com> 2.6.35.13-91