فهرست منبع

qcacld-3.0: Check vdev from CDP vdev_id API

Check for validity of vdev obtained from the CDP
cdp_get_vdev_from_vdev_id API.

Change-Id: Ie7fb99a0e08135bd3f2cc6b63070a4bd72df943a
CRs-Fixed: 2434583
Mohit Khanna 6 سال پیش
والد
کامیت
d5301ee912
1فایلهای تغییر یافته به همراه9 افزوده شده و 3 حذف شده
  1. 9 3
      ipa/core/src/wlan_ipa_core.c

+ 9 - 3
ipa/core/src/wlan_ipa_core.c

@@ -354,13 +354,15 @@ static enum wlan_ipa_forward_type wlan_ipa_intrabss_forward(
 	if ((desc & FW_RX_DESC_FORWARD_M)) {
 		void *vdev = cdp_get_vdev_from_vdev_id(soc, pdev,
 						       iface_ctx->session_id);
+		if (!vdev)
+			goto drop_pkt;
+
 		if (cdp_tx_desc_thresh_reached(soc, vdev)) {
 			/* Drop the packet*/
 			ipa_ctx->stats.num_tx_fwd_err++;
-			dev_kfree_skb_any(skb);
-			ret = WLAN_IPA_FORWARD_PKT_DISCARD;
-			return ret;
+			goto drop_pkt;
 		}
+
 		ipa_debug_rl("Forward packet to Tx (fw_desc=%d)", desc);
 		ipa_ctx->ipa_tx_forward++;
 
@@ -380,7 +382,11 @@ static enum wlan_ipa_forward_type wlan_ipa_intrabss_forward(
 			ret = WLAN_IPA_FORWARD_PKT_LOCAL_STACK;
 		}
 	}
+	return ret;
 
+drop_pkt:
+	dev_kfree_skb_any(skb);
+	ret = WLAN_IPA_FORWARD_PKT_DISCARD;
 	return ret;
 }