From f160e72b0d4f34ca2be44a89599a1c5462fb1b14 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Thu, 27 Aug 2020 14:29:23 +0200 Subject: [PATCH] device: fix autoactivating virtual devices after a failure When a virtual device fails, its state goes to FAIL and then DISCONNECTED. In DISCONNECTED we call schedule_activate_check() to schedule an auto-activation if needed. We also schudule the deletion of the link through delete_on_deactivate_check_and_schedule(). The auto-activation attempt fails because the link deletion unmanages the device; as a result, the device doesn't try to auto-activate again. To fix this: - don't allow the device to auto-activate if the device deletion is pending; - check again if the device can be auto-activated after its deletion. https://bugzilla.redhat.com/show_bug.cgi?id=1818697 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/613 (cherry picked from commit e404585e60a2b7a80be358d33862674d6d0a2505) (cherry picked from commit dac89c072745000b2a68396bd9677c7ecc544035) --- src/devices/nm-device.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 8c77f0356f..1e9226ae25 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -5648,6 +5648,9 @@ nm_device_autoconnect_allowed (NMDevice *self) return FALSE; } + if (priv->delete_on_deactivate_data) + return FALSE; + /* The 'autoconnect-allowed' signal is emitted on a device to allow * other listeners to block autoconnect on the device if they wish. * This is mainly used by the OLPC Mesh devices to block autoconnect @@ -11658,6 +11661,8 @@ delete_on_deactivate_link_delete (gpointer user_data) } else if (data->ifindex > 0) nm_platform_link_delete (nm_device_get_platform (self), data->ifindex); + nm_device_emit_recheck_auto_activate (self); + g_free (data); return FALSE; }