policy: assert that the auto-activate list is empty on dispose

We are currently asserting that the list of devices waiting for
auto-activation in NMPolicy is not empty. This condition is always
false because:

 - NMDevice holds a reference to NMManager
 - NMManager holds a reference to NMPolicy
 - on dispose, NMDevice asserts that it's not in NMPolicy's
   auto-activate list

Therefore if there is any NMDevice alive, NMPolicy must be alive as
well. Instead, if there is no NMDevice alive the list must be empty.

The assertion could fail only when the NMPolicy instance gets
disposed, which usually doesn't happen because it's still referenced
at shutdown.

Fixes: aede228974 ('core: assert that devices are not registered when disposing NMPolicy')
(cherry picked from commit 27b646cfa1)
This commit is contained in:
Beniamino Galvani 2024-07-09 10:44:21 +02:00 committed by Fernando Fernandez Mancera
parent 00e178351b
commit 1b51404703

View file

@ -2934,7 +2934,7 @@ dispose(GObject *object)
NMPolicy *self = NM_POLICY(object);
NMPolicyPrivate *priv = NM_POLICY_GET_PRIVATE(self);
nm_assert(!c_list_is_empty(&priv->policy_auto_activate_lst_head));
nm_assert(c_list_is_empty(&priv->policy_auto_activate_lst_head));
nm_assert(g_hash_table_size(priv->devices) == 0);
nm_clear_g_object(&priv->default_ac4);