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')
This commit is contained in:
Beniamino Galvani
2024-07-09 10:44:21 +02:00
parent 7f8f68d28a
commit 27b646cfa1

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