From d3d5b807d64acb09db4f56244278322810222c64 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Tue, 9 Mar 2021 07:41:00 +0100 Subject: [PATCH] devices: fail optional-802.1X connections if supplicant disappears 802-1x.optional=yes means that NM should tolerate a failure or a timeout of the 802.1X authentication and should keep the connection up. Even if the authentication doesn't succeed, NM keeps the supplicant running so that it can continue trying. If the supplicant disappears because it crashed or was killed externally, NM should fail the connection so that it can be retried. The current code is wrong also because after releasing the supplicant interface, it calls wired_auth_cond_fail() which tries to connect a signal to priv->supplicant.iface (which is NULL). https://bugzilla.redhat.com/show_bug.cgi?id=1934291 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/776 (cherry picked from commit 840e54a96cc3d63ca8ebe889e873b03577f9eb10) (cherry picked from commit b4ba6e7af5df3a317706d49e5f75f6dafc14ba08) --- src/devices/nm-device-ethernet.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/devices/nm-device-ethernet.c b/src/devices/nm-device-ethernet.c index 2c894ccb0d..21a6f18247 100644 --- a/src/devices/nm-device-ethernet.c +++ b/src/devices/nm-device-ethernet.c @@ -726,7 +726,9 @@ supplicant_iface_state_cb(NMSupplicantInterface *iface, if (new_state == NM_SUPPLICANT_INTERFACE_STATE_DOWN) { supplicant_interface_release(self); - wired_auth_cond_fail(self, NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED); + nm_device_state_changed(NM_DEVICE(self), + NM_DEVICE_STATE_FAILED, + NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED); return; }