summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2022-09-30 17:41:26 +0200
committerLubomir Rintel <lkundrak@v3.sk>2022-09-30 23:21:14 +0200
commitbf60fd5acc22ac73a911796d2f9bc33e46b1ba5d (patch)
tree928fdac8773a9ea02d63553ea9f66071346beb57
parenta49aede4b80e8b3c63f8c8b144de8e68da04e217 (diff)
downloadNetworkManager-bf60fd5acc22ac73a911796d2f9bc33e46b1ba5d.tar.gz
device: fix recheck slave logic
Since commit a1de6810df46 ('device: don't ignore external slave removals') we don't leave device_recheck_slave_status() on un-eslaving (that is plink->master = 0) early enough. This results in hooking of NM_MANAGER_DEVICE_IFINDEX_CHANGED even when we're not actually waiting for any master device to come up, accompanied by a messed up log entry: device[3fa7cfc200be4e84] (portXc): enslaved to unknown device 0 (??) We also log nonsense when we see any device's link being removed: device[a9a4b65bde851bcf] (br0): ifindex: set ifindex 0 (old-l3cfg: 05c6a4409f84d9d2) device[45d34e95fb71cce0] (portXa): master br0 with ifindex 0 appeared We don't do further damage afterwards, so this is purely a cosmetic annoyance.
-rw-r--r--src/core/devices/nm-device.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
index 3a7009e6c2..d4d21a408a 100644
--- a/src/core/devices/nm-device.c
+++ b/src/core/devices/nm-device.c
@@ -6573,27 +6573,30 @@ device_recheck_slave_status(NMDevice *self, const NMPlatformLink *plink)
NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED);
}
- if (master && NM_DEVICE_GET_CLASS(master)->attach_port) {
- nm_device_master_add_slave(master, self, FALSE);
+ if (master) {
+ if (NM_DEVICE_GET_CLASS(master)->attach_port) {
+ nm_device_master_add_slave(master, self, FALSE);
+ } else {
+ _LOGD(LOGD_DEVICE,
+ "enslaved to non-master-type device %s; ignoring",
+ nm_device_get_iface(master));
+ }
goto out;
}
- if (master) {
- _LOGD(LOGD_DEVICE,
- "enslaved to non-master-type device %s; ignoring",
- nm_device_get_iface(master));
- } else {
+ if (plink->master) {
_LOGD(LOGD_DEVICE,
"enslaved to unknown device %d (%s%s%s)",
plink->master,
NM_PRINT_FMT_QUOTED(plink_master, "\"", plink_master->name, "\"", "??"));
+ if (!priv->ifindex_changed_id) {
+ priv->ifindex_changed_id = g_signal_connect(nm_device_get_manager(self),
+ NM_MANAGER_DEVICE_IFINDEX_CHANGED,
+ G_CALLBACK(device_ifindex_changed_cb),
+ self);
+ }
}
- if (!priv->ifindex_changed_id) {
- priv->ifindex_changed_id = g_signal_connect(nm_device_get_manager(self),
- NM_MANAGER_DEVICE_IFINDEX_CHANGED,
- G_CALLBACK(device_ifindex_changed_cb),
- self);
- }
+
return;
out: