From bbaa603a7261be118c7cbcc3380d84e912bb1c1f Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 6 Feb 2018 11:35:21 +0100 Subject: [PATCH] device: gracefully handle unmanaged device during _device_activate() --- src/devices/nm-device.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 67df676b70..94906224ac 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -10160,7 +10160,7 @@ _device_activate (NMDevice *self, NMActRequest *req) g_return_if_fail (NM_IS_DEVICE (self)); g_return_if_fail (NM_IS_ACT_REQUEST (req)); - g_return_if_fail (nm_device_get_managed (self, FALSE)); + nm_assert (nm_device_is_real (self)); /* Ensure the activation request is still valid; the master may have * already failed in which case activation of this device should not proceed. @@ -10168,6 +10168,17 @@ _device_activate (NMDevice *self, NMActRequest *req) if (nm_active_connection_get_state (NM_ACTIVE_CONNECTION (req)) >= NM_ACTIVE_CONNECTION_STATE_DEACTIVATING) return; + if (!nm_device_get_managed (self, FALSE)) { + /* It's unclear why the device would be unmanaged at this point. + * Just to be sure, handle it and error out. */ + _LOGE (LOGD_DEVICE, "Activation: failed activating connection '%s' because device is still unmanaged", + nm_active_connection_get_settings_connection_id ((NMActiveConnection *) req)); + nm_active_connection_set_state_fail ((NMActiveConnection *) req, + NM_ACTIVE_CONNECTION_STATE_REASON_UNKNOWN, + NULL); + return; + } + connection = nm_act_request_get_applied_connection (req); nm_assert (connection);