qcacmn: Fix QDF assert in wlan_abort_scan if vdev is NULL

If vdev is NULL calling calling wlan_objmgr_vdev_release_ref
cause assert.

To fix avoid calling wlan_objmgr_vdev_release_ref if vdev is NULL.

Change-Id: I8bd40ac27a6733177ac55c791c7c3ddfe5bbba30
CRs-Fixed: 1095299
This commit is contained in:
Abhishek Singh 2017-03-14 18:01:43 +05:30 • committed by Sandeep Puligilla
commit 673bd512f3

View file

@ -650,6 +650,7 @@ QDF_STATUS wlan_abort_scan(struct wlan_objmgr_pdev *pdev,
osif_ctx = wlan_pdev_get_ospriv(pdev);
if (!osif_ctx) {
cfg80211_err("Failed to retrieve osif context");
qdf_mem_free(req);
return QDF_STATUS_E_FAILURE;
}
if (vdev_id == INVAL_VDEV_ID)
@ -659,6 +660,11 @@ QDF_STATUS wlan_abort_scan(struct wlan_objmgr_pdev *pdev,
vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev,
vdev_id, WLAN_OSIF_ID);
if (!vdev) {
cfg80211_err("Failed get vdev");
qdf_mem_free(req);
return QDF_STATUS_E_INVAL;
}
scan_priv = osif_ctx->osif_scan;
req->cancel_req.requester = scan_priv->req_id;
req->vdev = vdev;
@ -674,6 +680,7 @@ QDF_STATUS wlan_abort_scan(struct wlan_objmgr_pdev *pdev,
status = ucfg_scan_cancel(req);
if (QDF_IS_STATUS_ERROR(status))
cfg80211_err("Cancel scan request failed");
wlan_objmgr_vdev_release_ref(vdev, WLAN_OSIF_ID);
return status;
@ -684,7 +691,11 @@ int wlan_cfg80211_abort_scan(struct wlan_objmgr_pdev *pdev)
uint8_t pdev_id;
pdev_id = wlan_objmgr_pdev_get_pdev_id(pdev);
wlan_abort_scan(pdev, pdev_id, INVAL_VDEV_ID, INVAL_SCAN_ID);
if (ucfg_scan_get_pdev_status(pdev) !=
SCAN_NOT_IN_PROGRESS)
wlan_abort_scan(pdev, pdev_id,
INVAL_VDEV_ID, INVAL_SCAN_ID);
return 0;
}
@ -711,7 +722,10 @@ int wlan_vendor_abort_scan(struct wlan_objmgr_pdev *pdev,
ret = wlan_get_scanid(pdev, &scan_id, cookie);
if (ret != 0)
return ret;
wlan_abort_scan(pdev, pdev_id, INVAL_VDEV_ID, scan_id);
if (ucfg_scan_get_pdev_status(pdev) !=
SCAN_NOT_IN_PROGRESS)
wlan_abort_scan(pdev, pdev_id,
INVAL_VDEV_ID, scan_id);
}
return 0;
}