summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/hdd/inc/wlan_hdd_main.h8
-rw-r--r--core/hdd/src/wlan_hdd_cfg80211.c95
-rw-r--r--core/hdd/src/wlan_hdd_hostapd.c15
-rw-r--r--core/hdd/src/wlan_hdd_lpass.c4
-rw-r--r--core/hdd/src/wlan_hdd_p2p.c23
-rw-r--r--core/hdd/src/wlan_hdd_power.c21
-rw-r--r--core/hdd/src/wlan_hdd_scan.c20
-rw-r--r--core/hdd/src/wlan_hdd_stats.c5
-rw-r--r--core/hdd/src/wlan_hdd_tdls.c10
9 files changed, 197 insertions, 4 deletions
diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h
index dbab5eba0196..c078f75f18c5 100644
--- a/core/hdd/inc/wlan_hdd_main.h
+++ b/core/hdd/inc/wlan_hdd_main.h
@@ -1962,4 +1962,12 @@ hdd_wlan_nla_put_u64(struct sk_buff *skb, int attrtype, u64 value)
}
#endif
+static inline int wlan_hdd_validate_session_id(u8 session_id)
+{
+ if (session_id != HDD_SESSION_ID_INVALID)
+ return 0;
+
+ return -EINVAL;
+}
+
#endif /* end #if !defined(WLAN_HDD_MAIN_H) */
diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c
index 7807c42aa327..732351ca7f3e 100644
--- a/core/hdd/src/wlan_hdd_cfg80211.c
+++ b/core/hdd/src/wlan_hdd_cfg80211.c
@@ -4978,6 +4978,11 @@ __wlan_hdd_cfg80211_monitor_rssi(struct wiphy *wiphy,
ENTER_DEV(dev);
+ if (wlan_hdd_validate_session_id(adapter->sessionId)) {
+ hdd_err("invalid session id: %d", adapter->sessionId);
+ return -EINVAL;
+ }
+
ret = wlan_hdd_validate_context(hdd_ctx);
if (ret)
return ret;
@@ -9299,6 +9304,11 @@ static int __wlan_hdd_cfg80211_change_bss(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_CHANGE_BSS,
pAdapter->sessionId, params->ap_isolate));
@@ -9706,6 +9716,11 @@ static int __wlan_hdd_change_station(struct wiphy *wiphy,
TRACE_CODE_HDD_CHANGE_STATION,
pAdapter->sessionId, params->listen_interval));
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
ret = wlan_hdd_validate_context(pHddCtx);
if (0 != ret)
@@ -9974,6 +9989,11 @@ static int __wlan_hdd_cfg80211_add_key(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_ADD_KEY,
pAdapter->sessionId, params->key_len));
@@ -10430,6 +10450,11 @@ static int __wlan_hdd_cfg80211_set_default_key(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_SET_DEFAULT_KEY,
pAdapter->sessionId, key_index));
@@ -10834,6 +10859,11 @@ int wlan_hdd_cfg80211_update_bss(struct wiphy *wiphy,
ENTER();
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_UPDATE_BSS,
NO_SESSION, pAdapter->sessionId));
@@ -12417,6 +12447,11 @@ static int __wlan_hdd_cfg80211_connect(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_CONNECT,
pAdapter->sessionId, pAdapter->device_mode));
@@ -12679,6 +12714,11 @@ static int __wlan_hdd_cfg80211_disconnect(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_DISCONNECT,
pAdapter->sessionId, reason));
@@ -12909,6 +12949,11 @@ static int __wlan_hdd_cfg80211_join_ibss(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_JOIN_IBSS,
pAdapter->sessionId, pAdapter->device_mode));
@@ -13111,6 +13156,11 @@ static int __wlan_hdd_cfg80211_leave_ibss(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_LEAVE_IBSS,
pAdapter->sessionId,
@@ -13429,6 +13479,11 @@ int __wlan_hdd_cfg80211_del_station(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_DEL_STA,
pAdapter->sessionId, pAdapter->device_mode));
@@ -13667,6 +13722,11 @@ static int __wlan_hdd_cfg80211_add_station(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_ADD_STA,
pAdapter->sessionId, params->listen_interval));
@@ -13746,6 +13806,11 @@ static int __wlan_hdd_cfg80211_set_pmksa(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
if (!pmksa) {
hdd_err("pmksa is NULL");
return -EINVAL;
@@ -13827,6 +13892,11 @@ static int __wlan_hdd_cfg80211_del_pmksa(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
if (!pmksa) {
hdd_err("pmksa is NULL");
return -EINVAL;
@@ -13907,6 +13977,11 @@ static int __wlan_hdd_cfg80211_flush_pmksa(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
hdd_warn("Flushing PMKSA");
pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
@@ -13978,6 +14053,11 @@ __wlan_hdd_cfg80211_update_ft_ies(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_UPDATE_FT_IES,
pAdapter->sessionId, pHddStaCtx->conn_info.connState));
@@ -14109,6 +14189,11 @@ int __wlan_hdd_cfg80211_set_rekey_data(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_SET_REKEY_DATA,
pAdapter->sessionId, pAdapter->device_mode));
@@ -14600,6 +14685,11 @@ __wlan_hdd_cfg80211_set_ap_channel_width(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
status = wlan_hdd_validate_context(pHddCtx);
if (status)
@@ -14707,6 +14797,11 @@ static int __wlan_hdd_cfg80211_channel_switch(struct wiphy *wiphy,
hdd_notice("Set Freq %d",
csa_params->chandef.chan->center_freq);
+ if (wlan_hdd_validate_session_id(adapter->sessionId)) {
+ hdd_err("invalid session id: %d", adapter->sessionId);
+ return -EINVAL;
+ }
+
hdd_ctx = WLAN_HDD_GET_CTX(adapter);
ret = wlan_hdd_validate_context(hdd_ctx);
diff --git a/core/hdd/src/wlan_hdd_hostapd.c b/core/hdd/src/wlan_hdd_hostapd.c
index e35cea0d183c..5b1c8bb7043e 100644
--- a/core/hdd/src/wlan_hdd_hostapd.c
+++ b/core/hdd/src/wlan_hdd_hostapd.c
@@ -7610,6 +7610,11 @@ static int __wlan_hdd_cfg80211_stop_ap(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_STOP_AP,
pAdapter->sessionId, pAdapter->device_mode));
@@ -7835,6 +7840,11 @@ static int __wlan_hdd_cfg80211_start_ap(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_START_AP, pAdapter->sessionId,
params->beacon_interval));
@@ -8054,6 +8064,11 @@ static int __wlan_hdd_cfg80211_change_beacon(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_CHANGE_BEACON,
pAdapter->sessionId, pAdapter->device_mode));
diff --git a/core/hdd/src/wlan_hdd_lpass.c b/core/hdd/src/wlan_hdd_lpass.c
index 09cac5689c6f..de80700c7d3e 100644
--- a/core/hdd/src/wlan_hdd_lpass.c
+++ b/core/hdd/src/wlan_hdd_lpass.c
@@ -77,8 +77,10 @@ static int wlan_hdd_gen_wlan_status_pack(struct wlan_status_data *data,
return -EINVAL;
}
- if (adapter->sessionId == HDD_SESSION_ID_INVALID)
+ if (wlan_hdd_validate_session_id(adapter->sessionId)) {
+ hdd_err("invalid session id: %d", adapter->sessionId);
return -EINVAL;
+ }
hdd_ctx = WLAN_HDD_GET_CTX(adapter);
if (hdd_ctx->lpss_support && hdd_ctx->config->enable_lpass_support)
diff --git a/core/hdd/src/wlan_hdd_p2p.c b/core/hdd/src/wlan_hdd_p2p.c
index 7fe1b20428a4..ed54273ca7d9 100644
--- a/core/hdd/src/wlan_hdd_p2p.c
+++ b/core/hdd/src/wlan_hdd_p2p.c
@@ -947,6 +947,11 @@ static int __wlan_hdd_cfg80211_remain_on_channel(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_REMAIN_ON_CHANNEL,
pAdapter->sessionId, REMAIN_ON_CHANNEL_REQUEST));
@@ -1091,6 +1096,11 @@ __wlan_hdd_cfg80211_cancel_remain_on_channel(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
status = wlan_hdd_validate_context(pHddCtx);
if (0 != status)
@@ -1245,6 +1255,11 @@ static int __wlan_hdd_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_ACTION, pAdapter->sessionId,
pAdapter->device_mode));
@@ -2038,7 +2053,8 @@ struct wireless_dev *__wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
wlan_hdd_tdls_disable_offchan_and_teardown_links(pHddCtx);
pAdapter = hdd_get_adapter(pHddCtx, QDF_STA_MODE);
- if (pAdapter != NULL) {
+ if ((pAdapter != NULL) &&
+ !(wlan_hdd_validate_session_id(pAdapter->sessionId))) {
scan_info = &pAdapter->scan_info;
if (scan_info->mScanPending) {
hdd_abort_mac_scan(pHddCtx, pAdapter->sessionId,
@@ -2176,6 +2192,11 @@ int __wlan_hdd_del_virtual_intf(struct wiphy *wiphy, struct wireless_dev *wdev)
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pVirtAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pVirtAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_DEL_VIRTUAL_INTF,
pVirtAdapter->sessionId, pVirtAdapter->device_mode));
diff --git a/core/hdd/src/wlan_hdd_power.c b/core/hdd/src/wlan_hdd_power.c
index 4c003fd26030..8da6f6fe5744 100644
--- a/core/hdd/src/wlan_hdd_power.c
+++ b/core/hdd/src/wlan_hdd_power.c
@@ -1902,6 +1902,12 @@ static int __wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy,
status = hdd_get_front_adapter(pHddCtx, &pAdapterNode);
while (NULL != pAdapterNode && QDF_STATUS_SUCCESS == status) {
pAdapter = pAdapterNode->pAdapter;
+
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ goto next_adapter;
+ }
+
if (QDF_SAP_MODE == pAdapter->device_mode) {
if (BSS_START ==
WLAN_HDD_GET_HOSTAP_STATE_PTR(pAdapter)->bssState &&
@@ -1930,6 +1936,7 @@ static int __wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy,
}
if (pAdapter->is_roc_inprogress)
wlan_hdd_cleanup_remain_on_channel_ctx(pAdapter);
+next_adapter:
status = hdd_get_next_adapter(pHddCtx, pAdapterNode, &pNext);
pAdapterNode = pNext;
}
@@ -2147,6 +2154,11 @@ static int __wlan_hdd_cfg80211_set_power_mgmt(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_SET_POWER_MGMT,
pAdapter->sessionId, timeout));
@@ -2332,6 +2344,11 @@ static int __wlan_hdd_cfg80211_get_txpower(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(adapter->sessionId)) {
+ hdd_err("invalid session id: %d", adapter->sessionId);
+ return -EINVAL;
+ }
+
status = wlan_hdd_validate_context(pHddCtx);
if (0 != status) {
*dbm = 0;
@@ -2344,8 +2361,8 @@ static int __wlan_hdd_cfg80211_get_txpower(struct wiphy *wiphy,
}
/* Validate adapter sessionId */
- if (adapter->sessionId == HDD_SESSION_ID_INVALID) {
- hdd_err("Adapter Session Invalid!");
+ if (wlan_hdd_validate_session_id(adapter->sessionId)) {
+ hdd_err("invalid session id: %d", adapter->sessionId);
return -ENOTSUPP;
}
diff --git a/core/hdd/src/wlan_hdd_scan.c b/core/hdd/src/wlan_hdd_scan.c
index f74c58fb99b0..0eeea096f8d0 100644
--- a/core/hdd/src/wlan_hdd_scan.c
+++ b/core/hdd/src/wlan_hdd_scan.c
@@ -1436,6 +1436,11 @@ static int __wlan_hdd_cfg80211_scan(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
status = wlan_hdd_validate_context(pHddCtx);
if (0 != status)
@@ -2244,6 +2249,11 @@ static int __wlan_hdd_cfg80211_sched_scan_start(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
ret = wlan_hdd_validate_context(pHddCtx);
@@ -2526,6 +2536,11 @@ static int __wlan_hdd_cfg80211_sched_scan_stop(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
if (NULL == pHddCtx) {
@@ -2634,6 +2649,11 @@ static void __wlan_hdd_cfg80211_abort_scan(struct wiphy *wiphy,
return;
}
+ if (wlan_hdd_validate_session_id(adapter->sessionId)) {
+ hdd_err("invalid session id: %d", adapter->sessionId);
+ return;
+ }
+
ret = wlan_hdd_validate_context(hdd_ctx);
if (!ret)
return;
diff --git a/core/hdd/src/wlan_hdd_stats.c b/core/hdd/src/wlan_hdd_stats.c
index e38f1db5f85a..67f45a364d05 100644
--- a/core/hdd/src/wlan_hdd_stats.c
+++ b/core/hdd/src/wlan_hdd_stats.c
@@ -1659,6 +1659,11 @@ static int __wlan_hdd_cfg80211_get_station(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
if ((eConnectionState_Associated != pHddStaCtx->conn_info.connState) ||
(0 == ssidlen)) {
hdd_notice("Not associated or Invalid ssidlen, %d",
diff --git a/core/hdd/src/wlan_hdd_tdls.c b/core/hdd/src/wlan_hdd_tdls.c
index 0227bd10d69e..4674bd137281 100644
--- a/core/hdd/src/wlan_hdd_tdls.c
+++ b/core/hdd/src/wlan_hdd_tdls.c
@@ -3932,6 +3932,11 @@ static int __wlan_hdd_cfg80211_tdls_mgmt(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_TDLS_MGMT,
pAdapter->sessionId, action_code));
@@ -4438,6 +4443,11 @@ static int __wlan_hdd_cfg80211_tdls_oper(struct wiphy *wiphy,
return -EINVAL;
}
+ if (wlan_hdd_validate_session_id(pAdapter->sessionId)) {
+ hdd_err("invalid session id: %d", pAdapter->sessionId);
+ return -EINVAL;
+ }
+
MTRACE(qdf_trace(QDF_MODULE_ID_HDD,
TRACE_CODE_HDD_CFG80211_TDLS_OPER,
pAdapter->sessionId, oper));