summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-02-06 11:35:21 +0100
committerThomas Haller <thaller@redhat.com>2018-02-07 12:35:22 +0100
commitbbaa603a7261be118c7cbcc3380d84e912bb1c1f (patch)
treec446f5ca71703e750931244d7c2a872656020928
parent9c094f93fb665fb68807960879dcd341b6f3dd6a (diff)
downloadNetworkManager-bbaa603a7261be118c7cbcc3380d84e912bb1c1f.tar.gz
device: gracefully handle unmanaged device during _device_activate()
-rw-r--r--src/devices/nm-device.c13
1 files changed, 12 insertions, 1 deletions
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);