qcacld-3.0: Reject TDLS cmd if still in progress

Reject any incoming get_all_peers TDLS command if there are any
currently in progress.

The later commands will only be processed once the earlier commands
finish, since they are processed sequentially. However, once a
command finishes, the memory allocated for it from userspace is freed
up. Each command is passed the same address so the later commands will
end up writing to a freed address. To avoid this, reject incoming
requests if there are any still in progress.

Change-Id: I6970e3b73c6ce5afc921edaaf477825928800342
CRs-Fixed: 3150044
This commit is contained in:
Lincoln Tran authored and Gerrit - the friendly Code Review server committed 2022-06-09 02:46:34 -07:00
1 parent d6e3d38323
commit 015f3d8869
1 file changed
+5
+5
View File
@@ -711,6 +711,11 @@ int wlan_cfg80211_tdls_get_all_peers(struct wlan_objmgr_vdev *vdev,
tdls_priv = osif_priv->osif_tdls;
if (!completion_done(&tdls_priv->tdls_user_cmd_comp)) {
osif_err("TDLS user cmd still in progress, reject this one");
return -EBUSY;
}
wlan_cfg80211_update_tdls_peers_rssi(vdev);
reinit_completion(&tdls_priv->tdls_user_cmd_comp);