Commit 16dd9b8c authored by Shyam Prasad N's avatar Shyam Prasad N Committed by Steve French

cifs: added WARN_ON for all the count decrements

We have a few ref counters srv_count, ses_count and
tc_count which we use for ref counting. Added a WARN_ON
during the decrement of each of these counters to make
sure that they don't go below their minimum values.
Signed-off-by: default avatarShyam Prasad N <sprasad@microsoft.com>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent 63f94e94
...@@ -1295,6 +1295,9 @@ cifs_put_tcp_session(struct TCP_Server_Info *server, int from_reconnect) ...@@ -1295,6 +1295,9 @@ cifs_put_tcp_session(struct TCP_Server_Info *server, int from_reconnect)
return; return;
} }
/* srv_count can never go negative */
WARN_ON(server->srv_count < 0);
put_net(cifs_net_ns(server)); put_net(cifs_net_ns(server));
list_del_init(&server->tcp_ses_list); list_del_init(&server->tcp_ses_list);
...@@ -1654,6 +1657,9 @@ void cifs_put_smb_ses(struct cifs_ses *ses) ...@@ -1654,6 +1657,9 @@ void cifs_put_smb_ses(struct cifs_ses *ses)
} }
spin_unlock(&cifs_tcp_ses_lock); spin_unlock(&cifs_tcp_ses_lock);
/* ses_count can never go negative */
WARN_ON(ses->ses_count < 0);
spin_lock(&GlobalMid_Lock); spin_lock(&GlobalMid_Lock);
if (ses->status == CifsGood) if (ses->status == CifsGood)
ses->status = CifsExiting; ses->status = CifsExiting;
...@@ -2021,6 +2027,9 @@ cifs_put_tcon(struct cifs_tcon *tcon) ...@@ -2021,6 +2027,9 @@ cifs_put_tcon(struct cifs_tcon *tcon)
return; return;
} }
/* tc_count can never go negative */
WARN_ON(tcon->tc_count < 0);
if (tcon->use_witness) { if (tcon->use_witness) {
int rc; int rc;
......
...@@ -2910,6 +2910,8 @@ smb2_get_dfs_refer(const unsigned int xid, struct cifs_ses *ses, ...@@ -2910,6 +2910,8 @@ smb2_get_dfs_refer(const unsigned int xid, struct cifs_ses *ses,
/* ipc tcons are not refcounted */ /* ipc tcons are not refcounted */
spin_lock(&cifs_tcp_ses_lock); spin_lock(&cifs_tcp_ses_lock);
tcon->tc_count--; tcon->tc_count--;
/* tc_count can never go negative */
WARN_ON(tcon->tc_count < 0);
spin_unlock(&cifs_tcp_ses_lock); spin_unlock(&cifs_tcp_ses_lock);
} }
kfree(utf16_path); kfree(utf16_path);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment