]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: Set dev->proto_down before changing carrier state
authorIdo Schimmel <idosch@nvidia.com>
Thu, 7 May 2026 10:59:03 +0000 (13:59 +0300)
committerJakub Kicinski <kuba@kernel.org>
Fri, 8 May 2026 23:50:26 +0000 (16:50 -0700)
A subsequent patch will make netif_carrier_on() a NOP for net devices
that have protodown turned on so that they will not accidentally gain
carrier. As a preparation, set dev->proto_down before calling
netif_carrier_{off,on}().

Note that the only driver that supports protodown and has a notion of a
carrier is macvlan and it is calling netif_carrier_{off,on}() with RTNL
held.

No functional changes intended.

Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20260507105906.891817-2-idosch@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/dev.c

index 8bfa8313ef62eda9fe6aa037c6a5408df54e91cf..02d16be3457b1bd8bd4fca3385a93dcf89c26960 100644 (file)
@@ -10147,11 +10147,11 @@ int netif_change_proto_down(struct net_device *dev, bool proto_down)
                return -EOPNOTSUPP;
        if (!netif_device_present(dev))
                return -ENODEV;
+       WRITE_ONCE(dev->proto_down, proto_down);
        if (proto_down)
                netif_carrier_off(dev);
        else
                netif_carrier_on(dev);
-       WRITE_ONCE(dev->proto_down, proto_down);
        return 0;
 }