Browse Source

qcacmn: Add sanity checks on reo algorithm entry

Add following checks in the entry to management Rx REO algorithm entry.

        1. REO parameter are valid
        2. Frame type is management

CRs-Fixed: 3166096
Change-Id: I171fc51c1dfa948e32608aa3a1bb05fc6cb2197d
Edayilliam Jayadev 3 years ago
parent
commit
7993262fbe
1 changed files with 13 additions and 0 deletions
  1. 13 0
      umac/cmn_services/mgmt_txrx/core/src/wlan_mgmt_txrx_rx_reo.c

+ 13 - 0
umac/cmn_services/mgmt_txrx/core/src/wlan_mgmt_txrx_rx_reo.c

@@ -2645,6 +2645,9 @@ wlan_mgmt_rx_reo_algo_entry(struct wlan_objmgr_pdev *pdev,
 {
 {
 	struct mgmt_rx_reo_context *reo_ctx;
 	struct mgmt_rx_reo_context *reo_ctx;
 	QDF_STATUS ret;
 	QDF_STATUS ret;
+	uint8_t frame_type;
+	uint8_t frame_subtype;
+	struct ieee80211_frame *wh;
 
 
 	if (!is_queued)
 	if (!is_queued)
 		return QDF_STATUS_E_NULL_VALUE;
 		return QDF_STATUS_E_NULL_VALUE;
@@ -2751,6 +2754,16 @@ wlan_mgmt_rx_reo_algo_entry(struct wlan_objmgr_pdev *pdev,
 	 */
 	 */
 	qdf_spin_lock(&reo_ctx->reo_algo_entry_lock);
 	qdf_spin_lock(&reo_ctx->reo_algo_entry_lock);
 
 
+	if ((desc->type == MGMT_RX_REO_FRAME_DESC_HOST_CONSUMED_FRAME ||
+	     desc->type == MGMT_RX_REO_FRAME_DESC_FW_CONSUMED_FRAME) &&
+	    !desc->rx_params->reo_params->valid)
+		qdf_assert_always(0);
+
+	wh = (struct ieee80211_frame *)qdf_nbuf_data(desc->nbuf);
+	frame_type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK;
+	frame_subtype = wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK;
+	qdf_assert_always(mgmt_type == IEEE80211_FC0_TYPE_MGT);
+
 	/* Update the Host snapshot */
 	/* Update the Host snapshot */
 	ret = wlan_mgmt_rx_reo_update_host_snapshot(
 	ret = wlan_mgmt_rx_reo_update_host_snapshot(
 						pdev,
 						pdev,