[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>
This commit is contained in:
Steve French 2008-01-03 17:37:09 +00:00
parent 97837582bc
commit 88e7d705c4

View file

@ -1966,13 +1966,13 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
pSesInfo = existingCifsSes; pSesInfo = existingCifsSes;
cFYI(1, ("Existing smb sess found (status=%d)", cFYI(1, ("Existing smb sess found (status=%d)",
pSesInfo->status)); pSesInfo->status));
down(&pSesInfo->sesSem);
if (pSesInfo->status == CifsNeedReconnect) { if (pSesInfo->status == CifsNeedReconnect) {
cFYI(1, ("Session needs reconnect")); cFYI(1, ("Session needs reconnect"));
down(&pSesInfo->sesSem);
rc = cifs_setup_session(xid, pSesInfo, rc = cifs_setup_session(xid, pSesInfo,
cifs_sb->local_nls); cifs_sb->local_nls);
up(&pSesInfo->sesSem);
} }
up(&pSesInfo->sesSem);
} else if (!rc) { } else if (!rc) {
cFYI(1, ("Existing smb sess not found")); cFYI(1, ("Existing smb sess not found"));
pSesInfo = sesInfoAlloc(); pSesInfo = sesInfoAlloc();
@ -3522,7 +3522,7 @@ cifs_umount(struct super_block *sb, struct cifs_sb_info *cifs_sb)
sesInfoFree(ses); sesInfoFree(ses);
FreeXid(xid); 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, int cifs_setup_session(unsigned int xid, struct cifsSesInfo *pSesInfo,