]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
bonding: fix mii_status when slave is down
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Thu, 6 Nov 2025 18:02:52 +0000 (19:02 +0100)
committerJakub Kicinski <kuba@kernel.org>
Tue, 11 Nov 2025 01:51:30 +0000 (17:51 -0800)
netif_carrier_ok() doesn't check if the slave is up. Before the below
commit, netif_running() was also checked.

Fixes: 23a6037ce76c ("bonding: Remove support for use_carrier")
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Acked-by: Jay Vosburgh <jv@jvosburgh.net>
Link: https://patch.msgid.link/20251106180252.3974772-1-nicolas.dichtel@6wind.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/bonding/bond_main.c

index e95e593cd12d76c3e940c062e010f672d9ea054e..5abef8a3b7758e9d72b9b06a64b2d5016b9c3c9c 100644 (file)
@@ -2120,7 +2120,7 @@ skip_mac_set:
        /* check for initial state */
        new_slave->link = BOND_LINK_NOCHANGE;
        if (bond->params.miimon) {
-               if (netif_carrier_ok(slave_dev)) {
+               if (netif_running(slave_dev) && netif_carrier_ok(slave_dev)) {
                        if (bond->params.updelay) {
                                bond_set_slave_link_state(new_slave,
                                                          BOND_LINK_BACK,
@@ -2665,7 +2665,8 @@ static int bond_miimon_inspect(struct bonding *bond)
        bond_for_each_slave_rcu(bond, slave, iter) {
                bond_propose_link_state(slave, BOND_LINK_NOCHANGE);
 
-               link_state = netif_carrier_ok(slave->dev);
+               link_state = netif_running(slave->dev) &&
+                            netif_carrier_ok(slave->dev);
 
                switch (slave->link) {
                case BOND_LINK_UP: