From: Yu Watanabe Date: Tue, 27 May 2025 14:17:40 +0000 (+0900) Subject: network/link: ENODATA from reading IFLA_MASTER when an interface has no master X-Git-Tag: v258-rc1~465^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f44b20b7b6c6b0a089a3ec2392ac85e4772e0357;p=thirdparty%2Fsystemd.git network/link: ENODATA from reading IFLA_MASTER when an interface has no master When an interface leaved from the master interface, then reading IFLA_MASTER attribute causes ENODATA. When the interface was previously enslaved to another interface, we need to remove reference to the interface from the previous master interface. This is especially important when ``` ip link set dev eth0 nomaster ``` is called. Fixes a bug introduced by 0d411b7f8f5407e9ce84dcb4ede0b029ade7fede (v249). Fixes #37629. --- diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 96739b0d0a6..ccaaba25d33 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -2205,8 +2205,8 @@ static int link_update_master(Link *link, sd_netlink_message *message) { r = sd_netlink_message_read_u32(message, IFLA_MASTER, (uint32_t*) &master_ifindex); if (r == -ENODATA) - return 0; - if (r < 0) + master_ifindex = 0; /* no master interface */ + else if (r < 0) return log_link_debug_errno(link, r, "rtnl: failed to read master ifindex: %m"); if (master_ifindex == link->ifindex)