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

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
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -1295,6 +1295,9 @@ cifs_put_tcp_session(struct TCP_Server_Info *server, int from_reconnect)
		return;
	}

	/* srv_count can never go negative */
	WARN_ON(server->srv_count < 0);

	put_net(cifs_net_ns(server));

	list_del_init(&server->tcp_ses_list);
@@ -1654,6 +1657,9 @@ void cifs_put_smb_ses(struct cifs_ses *ses)
	}
	spin_unlock(&cifs_tcp_ses_lock);

	/* ses_count can never go negative */
	WARN_ON(ses->ses_count < 0);

	spin_lock(&GlobalMid_Lock);
	if (ses->status == CifsGood)
		ses->status = CifsExiting;
@@ -2021,6 +2027,9 @@ cifs_put_tcon(struct cifs_tcon *tcon)
		return;
	}

	/* tc_count can never go negative */
	WARN_ON(tcon->tc_count < 0);

	if (tcon->use_witness) {
		int rc;

+2 −0
Original line number Diff line number Diff line
@@ -2910,6 +2910,8 @@ smb2_get_dfs_refer(const unsigned int xid, struct cifs_ses *ses,
		/* ipc tcons are not refcounted */
		spin_lock(&cifs_tcp_ses_lock);
		tcon->tc_count--;
		/* tc_count can never go negative */
		WARN_ON(tcon->tc_count < 0);
		spin_unlock(&cifs_tcp_ses_lock);
	}
	kfree(utf16_path);