qcacld-3.0: Extend scan cleanup API to support netdev level cleanup

In the present scenario the function wlan_cfg80211_cleanup_scan_queue
does the code scan queue cleanup during radio detach, leading to access of
freed vdev netdev.

Extend cfg80211 scan cleanup API to support netdev level cleanup. The
second parameter if NULL cleans up all the queues or only the queue of
the specific net dev given.

Change-Id: I2a6b350fe5102b2a5d772dd9a075003ccf3b684c
CRs-Fixed: 2197309
This commit is contained in:
Sourav Mohapatra 2018-02-28 11:30:46 +05:30 • committed by nshrivas
commit 001cfaf94a
2 changed files with 4 additions and 4 deletions

View file

@ -1487,7 +1487,7 @@ static void wlan_hdd_handle_the_pld_uevent(struct pld_uevent_data *uevent)
hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
if (hdd_ctx != NULL)
wlan_cfg80211_cleanup_scan_queue(
hdd_ctx->hdd_pdev);
hdd_ctx->hdd_pdev, NULL);
break;
default:
break;

View file

@ -623,7 +623,7 @@ static int __hdd_netdev_notifier_call(struct notifier_block *nb,
* flag after which driver does not send the cfg80211_scan_done.
* Ensure to cleanup the scan queue in NETDEV_GOING_DOWN
*/
wlan_cfg80211_cleanup_scan_queue(hdd_ctx->hdd_pdev);
wlan_cfg80211_cleanup_scan_queue(hdd_ctx->hdd_pdev, dev);
break;
default:
@ -6462,7 +6462,7 @@ static void hdd_wlan_exit(struct hdd_context *hdd_ctx)
*/
hdd_set_idle_ps_config(hdd_ctx, false);
/* clear the scan queue in all the scenarios */
wlan_cfg80211_cleanup_scan_queue(hdd_ctx->hdd_pdev);
wlan_cfg80211_cleanup_scan_queue(hdd_ctx->hdd_pdev, NULL);
if (driver_status != DRIVER_MODULES_CLOSED) {
hdd_unregister_wext_all_adapters(hdd_ctx);
@ -12144,7 +12144,7 @@ static void hdd_stop_present_mode(struct hdd_context *hdd_ctx,
case QDF_GLOBAL_MISSION_MODE:
case QDF_GLOBAL_FTM_MODE:
hdd_abort_mac_scan_all_adapters(hdd_ctx);
wlan_cfg80211_cleanup_scan_queue(hdd_ctx->hdd_pdev);
wlan_cfg80211_cleanup_scan_queue(hdd_ctx->hdd_pdev, NULL);
hdd_stop_all_adapters(hdd_ctx);
break;