[PATCH 3/3][xenial SRU] Fix regression which breaks DFS mounting

Seth Forshee seth.forshee at canonical.com
Fri Sep 23 12:24:08 UTC 2016


From: Sachin Prabhu <sprabhu at redhat.com>

BugLink: http://bugs.launchpad.net/bugs/1626112

Patch a6b5058 results in -EREMOTE returned by is_path_accessible() in
cifs_mount() to be ignored which breaks DFS mounting.

Signed-off-by: Sachin Prabhu <sprabhu at redhat.com>
Reviewed-by: Aurelien Aptel <aaptel at suse.com>
CC: Stable <stable at vger.kernel.org>
Signed-off-by: Steve French <smfrench at gmail.com>
(cherry picked from commit de5233745cd59cf5853d963ad216067788a87594
 git://git.samba.org/sfrench/cifs-2.6.git)
Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
---
 fs/cifs/connect.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index b5c5aa6..88433a1 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -3720,14 +3720,16 @@ remote_path_check:
 			goto mount_fail_check;
 		}
 
-		rc = cifs_are_all_path_components_accessible(server,
+		if (rc != -EREMOTE) {
+			rc = cifs_are_all_path_components_accessible(server,
 							     xid, tcon, cifs_sb,
 							     full_path);
-		if (rc != 0) {
-			cifs_dbg(VFS, "cannot query dirs between root and final path, "
-				 "enabling CIFS_MOUNT_USE_PREFIX_PATH\n");
-			cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_USE_PREFIX_PATH;
-			rc = 0;
+			if (rc != 0) {
+				cifs_dbg(VFS, "cannot query dirs between root and final path, "
+					 "enabling CIFS_MOUNT_USE_PREFIX_PATH\n");
+				cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_USE_PREFIX_PATH;
+				rc = 0;
+			}
 		}
 		kfree(full_path);
 	}
-- 
2.7.4





More information about the kernel-team mailing list