瀏覽代碼

qcacld-3.0: Correct return value when ol_txrx_pdev_post_attach fails

When ol_txrx_pdev_post_attach fails, the return values are not
correctly set, and this could cause several issues.
Fix to assign return values correcly.

Change-Id: I43fb97bbdb10e019e02bf289f5b4995461eb75db
CRs-Fixed: 1113222
Yun Park 8 年之前
父節點
當前提交
f01f6e2a49
共有 1 個文件被更改,包括 15 次插入4 次删除
  1. 15 4
      core/dp/txrx/ol_txrx.c

+ 15 - 4
core/dp/txrx/ol_txrx.c

@@ -1288,9 +1288,11 @@ ol_txrx_pdev_post_attach(struct cdp_pdev *ppdev)
 		goto htt_attach_fail;
 
 	/* Attach micro controller data path offload resource */
-	if (ol_cfg_ipa_uc_offload_enabled(pdev->ctrl_pdev))
-		if (htt_ipa_uc_attach(pdev->htt_pdev))
+	if (ol_cfg_ipa_uc_offload_enabled(pdev->ctrl_pdev)) {
+		ret = htt_ipa_uc_attach(pdev->htt_pdev);
+		if (ret)
 			goto uc_attach_fail;
+	}
 
 	/* Calculate single element reserved size power of 2 */
 	pdev->tx_desc.desc_reserved_size = qdf_get_pwr2(desc_element_size);
@@ -1300,6 +1302,7 @@ ol_txrx_pdev_post_attach(struct cdp_pdev *ppdev)
 		(NULL == pdev->tx_desc.desc_pages.cacheable_pages)) {
 		QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
 			"Page alloc fail");
+		ret = -ENOMEM;
 		goto page_alloc_fail;
 	}
 	desc_per_page = pdev->tx_desc.desc_pages.num_element_per_page;
@@ -1346,6 +1349,7 @@ ol_txrx_pdev_post_attach(struct cdp_pdev *ppdev)
 				  "%s: failed to alloc HTT tx desc (%d of %d)",
 				__func__, i, desc_pool_size);
 			fail_idx = i;
+			ret = -ENOMEM;
 			goto desc_alloc_fail;
 		}
 
@@ -1401,6 +1405,7 @@ ol_txrx_pdev_post_attach(struct cdp_pdev *ppdev)
 		QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
 			  "%s Invalid standard frame type: %d",
 			  __func__, pdev->frame_format);
+		ret = -EINVAL;
 		goto control_init_fail;
 	}
 
@@ -1469,6 +1474,7 @@ ol_txrx_pdev_post_attach(struct cdp_pdev *ppdev)
 			  "Invalid std frame type; [en/de]cap: f:%x t:%x r:%x",
 			  pdev->frame_format,
 			  pdev->target_tx_tran_caps, pdev->target_rx_tran_caps);
+		ret = -EINVAL;
 		goto control_init_fail;
 	}
 #endif
@@ -1519,6 +1525,7 @@ ol_txrx_pdev_post_attach(struct cdp_pdev *ppdev)
 					  QDF_TRACE_LEVEL_ERROR,
 					  "%s: %s", __func__, TRACESTR01);
 #undef TRACESTR01
+				ret = -EINVAL;
 				goto control_init_fail;
 			}
 		} else {
@@ -1547,11 +1554,15 @@ ol_txrx_pdev_post_attach(struct cdp_pdev *ppdev)
 	qdf_spinlock_create(&pdev->peer_map_unmap_lock);
 	OL_TXRX_PEER_STATS_MUTEX_INIT(pdev);
 
-	if (OL_RX_REORDER_TRACE_ATTACH(pdev) != A_OK)
+	if (OL_RX_REORDER_TRACE_ATTACH(pdev) != A_OK) {
+		ret = -ENOMEM;
 		goto reorder_trace_attach_fail;
+	}
 
-	if (OL_RX_PN_TRACE_ATTACH(pdev) != A_OK)
+	if (OL_RX_PN_TRACE_ATTACH(pdev) != A_OK) {
+		ret = -ENOMEM;
 		goto pn_trace_attach_fail;
+	}
 
 #ifdef PERE_IP_HDR_ALIGNMENT_WAR
 	pdev->host_80211_enable = ol_scn_host_80211_enable_get(pdev->ctrl_pdev);