summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/cifs/cifsfs.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index fd5eae37f2a..99e087d3554 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -408,21 +408,24 @@ static struct quotactl_ops cifs_quotactl_ops = {
static void cifs_umount_begin(struct super_block * sblock)
{
struct cifs_sb_info *cifs_sb;
+ struct cifsTconInfo * tcon;
cifs_sb = CIFS_SB(sb);
if(cifs_sb == NULL)
- return -EIO;
- if(cifs_sb->tcon == NULL)
- return -EIO;
+ return;
+
+ tcon = cifs_sb->tcon;
+ if(tcon == NULL)
+ return;
down(&tcon->tconSem);
if (atomic_read(&tcon->useCount) == 1)
tcon->tidStatus = CifsExiting;
up(&tcon->tconSem);
- if((cifs->sb->tcon->ses) && (cifs_sb->tcon->ses->server))
+ if(tcon->ses && tcon->ses->server)
{
cERROR(1,("wake up tasks now - umount begin not complete"));
- wake_up_all(&server->request_q);
+ wake_up_all(&tcon->ses->server->request_q);
}
/* BB FIXME - finish add checks for tidStatus BB */