| From 1daaae8fa4afe3df78ca34e724ed7e8187e4eb32 Mon Sep 17 00:00:00 2001 |
| From: Jeff Layton <jlayton@redhat.com> |
| Date: Wed, 21 Mar 2012 06:30:40 -0400 |
| Subject: cifs: fix issue mounting of DFS ROOT when redirecting from one domain controller to the next |
| |
| From: Jeff Layton <jlayton@redhat.com> |
| |
| commit 1daaae8fa4afe3df78ca34e724ed7e8187e4eb32 upstream. |
| |
| This patch fixes an issue when cifs_mount receives a |
| STATUS_BAD_NETWORK_NAME error during cifs_get_tcon but is able to |
| continue after an DFS ROOT referral. In this case, the return code |
| variable is not reset prior to trying to mount from the system referred |
| to. Thus, is_path_accessible is not executed and the final DFS referral |
| is not performed causing a mount error. |
| |
| Use case: In DNS, example.com resolves to the secondary AD server |
| ad2.example.com Our primary domain controller is ad1.example.com and has |
| a DFS redirection set up from \\ad1\share\Users to \\files\share\Users. |
| Mounting \\example.com\share\Users fails. |
| |
| Regression introduced by commit 724d9f1. |
| |
| Reviewed-by: Pavel Shilovsky <piastry@etersoft.ru |
| Signed-off-by: Thomas Hadig <thomas@intapp.com> |
| Signed-off-by: Jeff Layton <jlayton@redhat.com> |
| Signed-off-by: Steve French <sfrench@us.ibm.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/cifs/connect.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/fs/cifs/connect.c |
| +++ b/fs/cifs/connect.c |
| @@ -3217,7 +3217,7 @@ cifs_ra_pages(struct cifs_sb_info *cifs_ |
| int |
| cifs_mount(struct cifs_sb_info *cifs_sb, struct smb_vol *volume_info) |
| { |
| - int rc = 0; |
| + int rc; |
| int xid; |
| struct cifs_ses *pSesInfo; |
| struct cifs_tcon *tcon; |
| @@ -3244,6 +3244,7 @@ try_mount_again: |
| FreeXid(xid); |
| } |
| #endif |
| + rc = 0; |
| tcon = NULL; |
| pSesInfo = NULL; |
| srvTcp = NULL; |