[PATCH 1/1] STA_ASSOC: Mark Port authorization and State Completion based on authorized state in connect event
Vinayak Yadawad
vinayak.yadawad at broadcom.com
Tue Aug 30 02:19:29 PDT 2022
Hi Jouni,
Gentle Reminder, Kindly review the change.
On Thu, Jun 30, 2022 at 9:38 AM Vinayak Yadawad
<vinayak.yadawad at broadcom.com> wrote:
>
> In case of drivers supporting 4way handshake offload, mark port
> authorized and state completion only if driver advertizes authorized
> state in the connect event. Otherwise there are fair chances of driver
> port authorization api gets called while 4-way handshake is in progress
> at the lower layer.
> In order to avoid this possible race condition always update port
> authorization and supplicant state WPA_COMPLETED setting from
> EVENT_PORT_AUTHORIZED context when driver is done with 4way handshake.
>
> Signed-off-by: Vinayak Yadawad <vinayak.yadawad at broadcom.com>
> ---
> wpa_supplicant/events.c | 25 +++++++++++++++++--------
> 1 file changed, 17 insertions(+), 8 deletions(-)
>
> diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
> index ec56cfdc0..f20e1c87b 100644
> --- a/wpa_supplicant/events.c
> +++ b/wpa_supplicant/events.c
> @@ -3478,14 +3478,23 @@ static void wpa_supplicant_event_assoc(struct wpa_supplicant *wpa_s,
> eapol_sm_notify_eap_success(wpa_s->eapol, true);
> } else if ((wpa_s->drv_flags & WPA_DRIVER_FLAGS_4WAY_HANDSHAKE_PSK) &&
> wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt)) {
> - /*
> - * We are done; the driver will take care of RSN 4-way
> - * handshake.
> - */
> - wpa_supplicant_cancel_auth_timeout(wpa_s);
> - wpa_supplicant_set_state(wpa_s, WPA_COMPLETED);
> - eapol_sm_notify_portValid(wpa_s->eapol, true);
> - eapol_sm_notify_eap_success(wpa_s->eapol, true);
> + if (already_authorized) {
> + /*
> + * We are done; the driver will take care of RSN 4-way
> + * handshake.
> + */
> + wpa_supplicant_cancel_auth_timeout(wpa_s);
> + wpa_supplicant_set_state(wpa_s, WPA_COMPLETED);
> + eapol_sm_notify_portValid(wpa_s->eapol, true);
> + eapol_sm_notify_eap_success(wpa_s->eapol, true);
> + } else {
> + /* Update port, WPA_COMPLETED state from
> + * EVENT_PORT_AUTHORIZED context when driver is done
> + * with 4way handshake.
> + */
> + wpa_msg(wpa_s, MSG_INFO, "ASSOC INFO: wait for driver port "
> + "authorized indication");
> + }
> } else if ((wpa_s->drv_flags & WPA_DRIVER_FLAGS_4WAY_HANDSHAKE_8021X) &&
> wpa_key_mgmt_wpa_ieee8021x(wpa_s->key_mgmt)) {
> /*
> --
> 2.32.0
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4218 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.infradead.org/pipermail/hostap/attachments/20220830/0b461767/attachment.p7s>
More information about the Hostap
mailing list