device: gracefully handle unmanaged device during _device_activate()

This commit is contained in:
Thomas Haller 2018-02-06 11:35:21 +01:00
parent 9c094f93fb
commit bbaa603a72

View file

@ -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);