From 6f1ca696c7f45659ad2bdacf90490ed680c01947 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Fri, 31 Aug 2012 21:35:32 +0300 Subject: [PATCH] P2P: Do not fail p2p_group_remove just based on current_ssid The wpa_s->current_ssid pointer may get cleared, e.g., when disconnected. Commit 30ee769235f3170d9bf6b62c11c6e018e97deb84 made wpas_p2p_group_delete() exit early before removing a P2P interface in this type of case. That can cause number of issues from p2p_group_remove command failing to busy loop when terminating wpa_supplicant if there is a P2P group interface in client mode and that interface happens to be in disconnected state. Fix these issues by allowing wpas_p2p_group_delete() remove the P2P group interface regardless of whether wpa_s->currnt_ssid is set. Signed-hostap: Jouni Malinen --- wpa_supplicant/p2p_supplicant.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index 191d543a2..f8959c6ab 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -262,7 +262,9 @@ static int wpas_p2p_group_delete(struct wpa_supplicant *wpa_s, break; ssid = ssid->next; } - if (ssid == NULL) { + if (ssid == NULL && + wpa_s->p2p_group_interface == NOT_P2P_GROUP_INTERFACE) + { wpa_printf(MSG_ERROR, "P2P: P2P group interface " "not found"); return -1;