From eae1b41e3390a2b8cbd22d8d2e196faed967e9c8 Mon Sep 17 00:00:00 2001 From: psimha Date: Fri, 25 Aug 2017 16:10:13 -0700 Subject: [PATCH] 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 --- dp/wifi3.0/dp_rx.c | 6 ++++-- dp/wifi3.0/dp_rx_mon_dest.c | 4 +++- dp/wifi3.0/dp_rx_mon_status.c | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/dp/wifi3.0/dp_rx.c b/dp/wifi3.0/dp_rx.c index fda2a2aee7b4..b3fe70179b9e 100644 --- a/dp/wifi3.0/dp_rx.c +++ b/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; } diff --git a/dp/wifi3.0/dp_rx_mon_dest.c b/dp/wifi3.0/dp_rx_mon_dest.c index 46533f11de54..dd63f4916ae7 100644 --- a/dp/wifi3.0/dp_rx_mon_dest.c +++ b/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; } diff --git a/dp/wifi3.0/dp_rx_mon_status.c b/dp/wifi3.0/dp_rx_mon_status.c index 16b4ea5c3b40..19b09a917ec9 100644 --- a/dp/wifi3.0/dp_rx_mon_status.c +++ b/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; }