summaryrefslogtreecommitdiffstats
path: root/fs/cifs/connect.c
diff options
context:
space:
mode:
authorSteve French2008-01-03 18:37:09 +0100
committerSteve French2008-01-03 18:37:09 +0100
commit88e7d705c4bdb729f02173583628ccbf49dba945 (patch)
tree36cfa6c7f9b651e7ef88815e6bf7fb51e5f6cccb /fs/cifs/connect.c
parent[CIFS] Allow setting mode via cifs acl (diff)
downloadkernel-qcow2-linux-88e7d705c4bdb729f02173583628ccbf49dba945.tar.gz
kernel-qcow2-linux-88e7d705c4bdb729f02173583628ccbf49dba945.tar.xz
kernel-qcow2-linux-88e7d705c4bdb729f02173583628ccbf49dba945.zip
[CIFS] hold ses sem on tcp session reconnect during mount
Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs/connect.c')
-rw-r--r--fs/cifs/connect.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 658f58b99e6f..db3746c891b5 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -1966,13 +1966,13 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
pSesInfo = existingCifsSes;
cFYI(1, ("Existing smb sess found (status=%d)",
pSesInfo->status));
+ down(&pSesInfo->sesSem);
if (pSesInfo->status == CifsNeedReconnect) {
cFYI(1, ("Session needs reconnect"));
- down(&pSesInfo->sesSem);
rc = cifs_setup_session(xid, pSesInfo,
cifs_sb->local_nls);
- up(&pSesInfo->sesSem);
}
+ up(&pSesInfo->sesSem);
} else if (!rc) {
cFYI(1, ("Existing smb sess not found"));
pSesInfo = sesInfoAlloc();
@@ -3522,7 +3522,7 @@ cifs_umount(struct super_block *sb, struct cifs_sb_info *cifs_sb)
sesInfoFree(ses);
FreeXid(xid);
- return rc; /* BB check if we should always return zero here */
+ return rc;
}
int cifs_setup_session(unsigned int xid, struct cifsSesInfo *pSesInfo,