Procházet zdrojové kódy

qcacmn: Fix uninitialized access to rx desc pool lock

Add a check to prevent access to a uninitialized lock.
This occurs on the failure path of pdev attach.

Change-Id: I8be9d7c97095a3ba96b6d1a8599ee2412eb8f5d6
CRs-Fixed: 2099448
psimha před 7 roky
rodič
revize
eae1b41e33

+ 4 - 2
dp/wifi3.0/dp_rx.c

@@ -1401,8 +1401,10 @@ dp_rx_pdev_detach(struct dp_pdev *pdev)
 
 	rx_desc_pool = &soc->rx_desc_buf[pdev_id];
 
-	dp_rx_desc_pool_free(soc, pdev_id, rx_desc_pool);
-	qdf_spinlock_destroy(&soc->rx_desc_mutex[pdev_id]);
+	if (rx_desc_pool->pool_size != 0) {
+		dp_rx_desc_pool_free(soc, pdev_id, rx_desc_pool);
+		qdf_spinlock_destroy(&soc->rx_desc_mutex[pdev_id]);
+	}
 
 	return;
 }

+ 3 - 1
dp/wifi3.0/dp_rx_mon_dest.c

@@ -845,7 +845,9 @@ dp_rx_pdev_mon_buf_detach(struct dp_pdev *pdev) {
 	struct rx_desc_pool *rx_desc_pool;
 
 	rx_desc_pool = &soc->rx_desc_mon[pdev_id];
-	dp_rx_desc_pool_free(soc, pdev_id, rx_desc_pool);
+	if (rx_desc_pool->pool_size != 0) {
+		dp_rx_desc_pool_free(soc, pdev_id, rx_desc_pool);
+	}
 
 	return QDF_STATUS_SUCCESS;
 }

+ 3 - 1
dp/wifi3.0/dp_rx_mon_status.c

@@ -386,7 +386,9 @@ dp_rx_pdev_mon_status_detach(struct dp_pdev *pdev)
 	struct rx_desc_pool *rx_desc_pool;
 
 	rx_desc_pool = &soc->rx_desc_status[pdev_id];
-	dp_rx_desc_pool_free(soc, pdev_id, rx_desc_pool);
+	if (rx_desc_pool->pool_size != 0) {
+		dp_rx_desc_pool_free(soc, pdev_id, rx_desc_pool);
+	}
 
 	return QDF_STATUS_SUCCESS;
 }