From 91dcde90502acf935125d9019e1358723f2d775a Mon Sep 17 00:00:00 2001 From: Vivek Date: Mon, 16 Sep 2019 11:12:14 +0530 Subject: [PATCH] qcacmn: Check for pdev/psoc before requesting serialization psoc object The serialization vdev destroy handlers extracts the psoc from the vdev, and get its psoc component object. If the pdev or psoc is NULL for some reason, we get a crash in object manager while trying to retrieve the serialization psoc object. So check for valid pdev/psoc before we get the serialization psoc object. Change-Id: I9ca45654250403a8b5fe674431251defd1aac6e8 CRs-Fixed: 2524231 --- .../src/wlan_serialization_utils.c | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/umac/cmn_services/serialization/src/wlan_serialization_utils.c b/umac/cmn_services/serialization/src/wlan_serialization_utils.c index 003baa50d585..a72535bcaade 100644 --- a/umac/cmn_services/serialization/src/wlan_serialization_utils.c +++ b/umac/cmn_services/serialization/src/wlan_serialization_utils.c @@ -158,10 +158,28 @@ QDF_STATUS wlan_serialization_cleanup_vdev_timers( struct wlan_serialization_timer *ser_timer; QDF_STATUS status = QDF_STATUS_SUCCESS; uint32_t i = 0; + struct wlan_objmgr_pdev *pdev = NULL; + struct wlan_objmgr_psoc *psoc = NULL; ser_enter(); - psoc_ser_obj = wlan_serialization_get_psoc_obj( - wlan_vdev_get_psoc(vdev)); + + pdev = wlan_vdev_get_pdev(vdev); + if (!pdev) { + QDF_BUG(0); + ser_err("pdev is null"); + status = QDF_STATUS_E_FAILURE; + goto error; + } + + psoc = wlan_pdev_get_psoc(pdev); + if (!psoc) { + QDF_BUG(0); + ser_err("psoc is null"); + status = QDF_STATUS_E_FAILURE; + goto error; + } + + psoc_ser_obj = wlan_serialization_get_psoc_obj(psoc); if (!psoc_ser_obj) { ser_err("Invalid psoc_ser_obj");