From c71c241674a7a2089fb28e98a0592e744ac973a9 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Thu, 15 May 2014 21:32:54 +0300 Subject: [PATCH] P2P: Clear P2P state if active interface is disabled The radio works for the interface get removed if interface is disabled. This could have left P2P module in invalid state if the interface got disabled during a p2p_find or p2p_listen operation. Clear the state in such a case to avoid blocking following operations due to P2P module assuming it is still in progress of doing something. Signed-off-by: Jouni Malinen --- wpa_supplicant/events.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c index 086c51093..9bc812d4e 100644 --- a/wpa_supplicant/events.c +++ b/wpa_supplicant/events.c @@ -3356,6 +3356,13 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event, wpas_p2p_disconnect(wpa_s); break; } + if (wpa_s->p2p_scan_work && wpa_s->global->p2p && + p2p_in_progress(wpa_s->global->p2p) > 1) { + /* This radio work will be cancelled, so clear P2P + * state as well. + */ + p2p_stop_find(wpa_s->global->p2p); + } #endif /* CONFIG_P2P */ if (wpa_s->wpa_state >= WPA_AUTHENTICATING) {