From 6d0e8a2acfa6b7b6a2af1834d8873fc18fc2c55a Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Thu, 16 Jul 2020 11:57:14 +0200 Subject: [PATCH] manager: fix race condition when resuming from sleep If the device state change (to disconnected or unmanaged) triggered by a sleep event happens after the wake, the devices becomes wrongly unmanaged and it's necessary to manually manage it again, or restart NM. During the wake event we should disconnect the device_sleep_cb() callback for all devices because we don't want to react to state changes anymore; in particular we don't need to detect when the device becomes disconnected to unmanage it. (cherry picked from commit fe2d93980bd5b61c55a8b65a55f7aad35042e691) (cherry picked from commit 971897195a8218cb0ec08ae95a7210fce73f0b03) (cherry picked from commit 7913275b02c60803f21609168f9c16d2f2a4be2f) --- src/nm-manager.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/nm-manager.c b/src/nm-manager.c index d7b2211e60..d88feb22f0 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -5993,8 +5993,9 @@ do_sleep_wake (NMManager *self, gboolean sleeping_changed) } else { _LOGD (LOGD_SUSPEND, "sleep: %s...", waking_from_suspend ? "waking up" : "re-enabling"); + sleep_devices_clear (self); + if (waking_from_suspend) { - sleep_devices_clear (self); c_list_for_each_entry (device, &priv->devices_lst_head, devices_lst) { if (nm_device_is_software (device)) continue;