diff options
| -rw-r--r-- | fs/smb/client/connect.c | 9 | ||||
| -rw-r--r-- | fs/smb/client/dfs.c | 9 | 
2 files changed, 10 insertions, 8 deletions
| diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c index 8e9a672320ab..1250d156619b 100644 --- a/fs/smb/client/connect.c +++ b/fs/smb/client/connect.c @@ -4086,16 +4086,17 @@ int cifs_tree_connect(const unsigned int xid, struct cifs_tcon *tcon, const stru  	/* only send once per connect */  	spin_lock(&tcon->tc_lock); +	if (tcon->status == TID_GOOD) { +		spin_unlock(&tcon->tc_lock); +		return 0; +	} +  	if (tcon->status != TID_NEW &&  	    tcon->status != TID_NEED_TCON) {  		spin_unlock(&tcon->tc_lock);  		return -EHOSTDOWN;  	} -	if (tcon->status == TID_GOOD) { -		spin_unlock(&tcon->tc_lock); -		return 0; -	}  	tcon->status = TID_IN_TCON;  	spin_unlock(&tcon->tc_lock); diff --git a/fs/smb/client/dfs.c b/fs/smb/client/dfs.c index 2f93bf8c3325..2390b2fedd6a 100644 --- a/fs/smb/client/dfs.c +++ b/fs/smb/client/dfs.c @@ -575,16 +575,17 @@ int cifs_tree_connect(const unsigned int xid, struct cifs_tcon *tcon, const stru  	/* only send once per connect */  	spin_lock(&tcon->tc_lock); +	if (tcon->status == TID_GOOD) { +		spin_unlock(&tcon->tc_lock); +		return 0; +	} +  	if (tcon->status != TID_NEW &&  	    tcon->status != TID_NEED_TCON) {  		spin_unlock(&tcon->tc_lock);  		return -EHOSTDOWN;  	} -	if (tcon->status == TID_GOOD) { -		spin_unlock(&tcon->tc_lock); -		return 0; -	}  	tcon->status = TID_IN_TCON;  	spin_unlock(&tcon->tc_lock); |