]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
Revert "net: rtnetlink: Enslave device before bringing it up"
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Mon, 8 Jan 2024 09:41:02 +0000 (10:41 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 12 Jan 2024 00:47:40 +0000 (16:47 -0800)
This reverts commit a4abfa627c3865c37e036bccb681619a50d3d93c.

The patch broke:
> ip link set dummy0 up
> ip link set dummy0 master bond0 down

This last command is useful to be able to enslave an interface with only
one netlink message.

After discussion, there is no good reason to support:
> ip link set dummy0 down
> ip link set dummy0 master bond0 up
because the bond interface already set the slave up when it is up.

Cc: stable@vger.kernel.org
Fixes: a4abfa627c38 ("net: rtnetlink: Enslave device before bringing it up")
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
Link: https://lore.kernel.org/r/20240108094103.2001224-2-nicolas.dichtel@6wind.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/rtnetlink.c

index 5f6ed6da3cfc0b6e7a660760a9efe242b5478f12..f6f29eb03ec277a1ea17ccc220fa7624bf6db092 100644 (file)
@@ -2899,13 +2899,6 @@ static int do_setlink(const struct sk_buff *skb,
                call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
        }
 
-       if (tb[IFLA_MASTER]) {
-               err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]), extack);
-               if (err)
-                       goto errout;
-               status |= DO_SETLINK_MODIFIED;
-       }
-
        if (ifm->ifi_flags || ifm->ifi_change) {
                err = dev_change_flags(dev, rtnl_dev_combine_flags(dev, ifm),
                                       extack);
@@ -2913,6 +2906,13 @@ static int do_setlink(const struct sk_buff *skb,
                        goto errout;
        }
 
+       if (tb[IFLA_MASTER]) {
+               err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]), extack);
+               if (err)
+                       goto errout;
+               status |= DO_SETLINK_MODIFIED;
+       }
+
        if (tb[IFLA_CARRIER]) {
                err = dev_change_carrier(dev, nla_get_u8(tb[IFLA_CARRIER]));
                if (err)