From 3ba616a89af19c3b73d39ff7ff91be37976c7fab Mon Sep 17 00:00:00 2001 From: Chaithanya Garrepalli Date: Fri, 5 Oct 2018 19:11:00 +0530 Subject: [PATCH] qcacmn: add locks in dp_get_vdev_from_soc_vdev_id_wifi3 API In dp_get_vdev_from_soc_vdev_id_wifi3 add vdev list lock while traversing through pdev->vdev_list Change-Id: I24652a7a65247625b3a6da092476287bf8560e1b CRs-fixed: 2323655 --- dp/wifi3.0/dp_htt.c | 2 ++ dp/wifi3.0/dp_peer.h | 3 +++ 2 files changed, 5 insertions(+) diff --git a/dp/wifi3.0/dp_htt.c b/dp/wifi3.0/dp_htt.c index 1dcb930243..b05297a423 100644 --- a/dp/wifi3.0/dp_htt.c +++ b/dp/wifi3.0/dp_htt.c @@ -1885,6 +1885,8 @@ static void dp_process_ppdu_stats_user_rate_tlv(struct dp_pdev *pdev, vdev = dp_get_vdev_from_soc_vdev_id_wifi3(pdev->soc, ppdu_desc->vdev_id); + if (!vdev) + return; qdf_mem_copy(ppdu_user_desc->mac_addr, vdev->mac_addr.raw, DP_MAC_ADDR_LEN); } else { diff --git a/dp/wifi3.0/dp_peer.h b/dp/wifi3.0/dp_peer.h index d310ea9d35..2bb1479dc7 100644 --- a/dp/wifi3.0/dp_peer.h +++ b/dp/wifi3.0/dp_peer.h @@ -173,15 +173,18 @@ dp_get_vdev_from_soc_vdev_id_wifi3(struct dp_soc *soc, for (i = 0; i < MAX_PDEV_CNT && soc->pdev_list[i]; i++) { pdev = soc->pdev_list[i]; + qdf_spin_lock_bh(&pdev->vdev_list_lock); TAILQ_FOREACH(vdev, &pdev->vdev_list, vdev_list_elem) { if (vdev->vdev_id == vdev_id) { QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO, FL("Found vdev 0x%pK on pdev %d"), vdev, i); + qdf_spin_unlock_bh(&pdev->vdev_list_lock); return vdev; } } + qdf_spin_unlock_bh(&pdev->vdev_list_lock); } return NULL;