mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-06 00:39:48 +00:00
cifs: fix missing spinlock around update to ses->status
[ Upstream commit 0060a4f28a
]
In the other places where we update ses->status we protect the
updates via GlobalMid_Lock. So to be consistent add the same
locking around it in cifs_put_smb_ses where it was missing.
Addresses-Coverity: 1268904 ("Data race condition")
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
4061697e2f
commit
8978dd2518
2 changed files with 6 additions and 2 deletions
|
@ -964,7 +964,7 @@ struct cifs_ses {
|
|||
struct mutex session_mutex;
|
||||
struct TCP_Server_Info *server; /* pointer to server info */
|
||||
int ses_count; /* reference counter */
|
||||
enum statusEnum status;
|
||||
enum statusEnum status; /* updates protected by GlobalMid_Lock */
|
||||
unsigned overrideSecFlg; /* if non-zero override global sec flags */
|
||||
char *serverOS; /* name of operating system underlying server */
|
||||
char *serverNOS; /* name of network operating system of server */
|
||||
|
@ -1814,6 +1814,7 @@ require use of the stronger protocol */
|
|||
* list operations on pending_mid_q and oplockQ
|
||||
* updates to XID counters, multiplex id and SMB sequence numbers
|
||||
* list operations on global DnotifyReqList
|
||||
* updates to ses->status
|
||||
* tcp_ses_lock protects:
|
||||
* list operations on tcp and SMB session lists
|
||||
* tcon->open_file_lock protects the list of open files hanging off the tcon
|
||||
|
|
|
@ -3049,9 +3049,12 @@ void cifs_put_smb_ses(struct cifs_ses *ses)
|
|||
spin_unlock(&cifs_tcp_ses_lock);
|
||||
return;
|
||||
}
|
||||
spin_unlock(&cifs_tcp_ses_lock);
|
||||
|
||||
spin_lock(&GlobalMid_Lock);
|
||||
if (ses->status == CifsGood)
|
||||
ses->status = CifsExiting;
|
||||
spin_unlock(&cifs_tcp_ses_lock);
|
||||
spin_unlock(&GlobalMid_Lock);
|
||||
|
||||
cifs_free_ipc(ses);
|
||||
|
||||
|
|
Loading…
Reference in a new issue