device: stop activation when queueing the unmanaged state

When the unmanaged state is queued, we must ensure that the current
activation doesn't overwrite the queue stated with a new one. This can
happen for example if a dispatcher script or a firewall call
terminate, or if the next activation stage is dispatched.

Fixes-test: @preserve_master_and_ip_settings
https://bugzilla.redhat.com/show_bug.cgi?id=2178269
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1599
(cherry picked from commit 89a8f51235)
This commit is contained in:
Beniamino Galvani 2023-04-07 14:48:49 +02:00
parent 5019004bad
commit b2ed01efc9

View file

@ -14542,6 +14542,9 @@ _set_unmanaged_flags(NMDevice *self,
if (transition_state) {
new_state = was_managed ? NM_DEVICE_STATE_UNMANAGED : NM_DEVICE_STATE_UNAVAILABLE;
if (new_state == NM_DEVICE_STATE_UNMANAGED) {
_cancel_activation(self);
}
if (now)
nm_device_state_changed(self, new_state, reason);
else