nl80211: Ensure nl_preq unregistration on driver deinit
authorCedric IZOARD <cedricx.izoard@intel.com>
Tue, 8 Jul 2014 07:50:32 +0000 (09:50 +0200)
committerJouni Malinen <j@w1.fi>
Tue, 8 Jul 2014 13:01:43 +0000 (16:01 +0300)
When driver interface is destroyed (via wpa_driver_nl80211_deinit) the
"preq" nl socket isn't always deleted but the callback struct associated
is. After the interface is destroyed we may still get event on the
socket but as the callback has been freed this will cause wpa_supplicant
to crash.

This patch ensures that the "preq" socket is destroyed when destroying
the interface.

Signed-off-by: Cedric IZOARD <cedricx.izoard@intel.com>
src/drivers/driver_nl80211.c

index 4d5da94..683123b 100644 (file)
@@ -10566,7 +10566,7 @@ static int wpa_driver_nl80211_probe_req_report(struct i802_bss *bss, int report)
 
        if (!report) {
                if (bss->nl_preq && drv->device_ap_sme &&
-                   is_ap_interface(drv->nlmode)) {
+                   is_ap_interface(drv->nlmode) && !bss->in_deinit) {
                        /*
                         * Do not disable Probe Request reporting that was
                         * enabled in nl80211_setup_ap().