diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 472b681321..453d294eec 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -8652,6 +8652,14 @@ _set_state_full (NMDevice *self, nm_dispatcher_call (DISPATCHER_ACTION_UP, nm_act_request_get_connection (req), self, NULL, NULL, NULL); break; case NM_DEVICE_STATE_FAILED: + /* Usually upon failure the activation chain is interrupted in + * one of the stages; but in some cases the device fails for + * external events (as a failure of master connection) while + * the activation sequence is running and so we need to ensure + * that the chain is terminated here. + */ + _cancel_activation (self); + if (nm_device_uses_assumed_connection (self)) { /* Avoid tearing down assumed connection, assume it's connected */ nm_device_queue_state (self,