From: Jouni Malinen Date: Fri, 12 Mar 2010 15:34:56 +0000 (+0200) Subject: wpa_cli: Fix detach race with forked monitor process X-Git-Tag: hostap_0_7_2~139 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=037f83eb4464cced3e912865a70100585b885f0d;p=thirdparty%2Fhostap.git wpa_cli: Fix detach race with forked monitor process Need to kill the monitor process before running detach command on the monitor connection to avoid race where the monitor process may end up getting the detach command result. --- diff --git a/wpa_supplicant/wpa_cli.c b/wpa_supplicant/wpa_cli.c index 454852c12..924ad96a1 100644 --- a/wpa_supplicant/wpa_cli.c +++ b/wpa_supplicant/wpa_cli.c @@ -255,6 +255,15 @@ static void wpa_cli_close_connection(void) if (ctrl_conn == NULL) return; +#ifdef CONFIG_WPA_CLI_FORK + if (mon_pid) { + int status; + kill(mon_pid, SIGPIPE); + wait(&status); + mon_pid = 0; + } +#endif /* CONFIG_WPA_CLI_FORK */ + if (wpa_cli_attached) { wpa_ctrl_detach(interactive ? mon_conn : ctrl_conn); wpa_cli_attached = 0; @@ -265,14 +274,6 @@ static void wpa_cli_close_connection(void) wpa_ctrl_close(mon_conn); mon_conn = NULL; } -#ifdef CONFIG_WPA_CLI_FORK - if (mon_pid) { - int status; - kill(mon_pid, SIGPIPE); - wait(&status); - mon_pid = 0; - } -#endif /* CONFIG_WPA_CLI_FORK */ }