]> git.baikalelectronics.ru Git - kernel.git/commitdiff
bonding: Rename slave_arr to usable_slaves
authorMaor Gottlieb <maorg@mellanox.com>
Thu, 30 Apr 2020 19:21:33 +0000 (22:21 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 18 Jan 2023 10:41:05 +0000 (11:41 +0100)
[ Upstream commit c03c3152ce184bd45933b62daad94e63e846de2c ]

Rename slave_arr to usable_slaves, since we will have two arrays,
one for the usable slaves and the other to all slaves.

Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Reviewed-by: Jay Vosburgh <jay.vosburgh@canonical.com>
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Stable-dep-of: f8a65ab2f3ff ("bonding: fix link recovery in mode 2 when updelay is nonzero")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/bonding/bond_alb.c
drivers/net/bonding/bond_main.c
include/net/bonding.h

index 8bee935c8f90f2fbe38c26f5bbfeec4420a5e88a..20114e1dde77e5388aaa1952f316a14828947bc2 100644 (file)
@@ -1360,7 +1360,7 @@ netdev_tx_t bond_tlb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
                                struct bond_up_slave *slaves;
                                unsigned int count;
 
-                               slaves = rcu_dereference(bond->slave_arr);
+                               slaves = rcu_dereference(bond->usable_slaves);
                                count = slaves ? READ_ONCE(slaves->count) : 0;
                                if (likely(count))
                                        tx_slave = slaves->arr[hash_index %
@@ -1494,7 +1494,7 @@ netdev_tx_t bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev)
                        struct bond_up_slave *slaves;
                        unsigned int count;
 
-                       slaves = rcu_dereference(bond->slave_arr);
+                       slaves = rcu_dereference(bond->usable_slaves);
                        count = slaves ? READ_ONCE(slaves->count) : 0;
                        if (likely(count))
                                tx_slave = slaves->arr[bond_xmit_hash(bond, skb) %
index 0e797730bab3a8dc8acc11a9398141332df4ce5e..dc351832b1084f7bc518ceca14c96e2b1c5dd0f5 100644 (file)
@@ -4073,9 +4073,9 @@ static void bond_skip_slave(struct bond_up_slave *slaves,
  */
 int bond_update_slave_arr(struct bonding *bond, struct slave *skipslave)
 {
+       struct bond_up_slave *usable_slaves, *old_usable_slaves;
        struct slave *slave;
        struct list_head *iter;
-       struct bond_up_slave *new_arr, *old_arr;
        int agg_id = 0;
        int ret = 0;
 
@@ -4083,11 +4083,10 @@ int bond_update_slave_arr(struct bonding *bond, struct slave *skipslave)
        WARN_ON(lockdep_is_held(&bond->mode_lock));
 #endif
 
-       new_arr = kzalloc(offsetof(struct bond_up_slave, arr[bond->slave_cnt]),
-                         GFP_KERNEL);
-       if (!new_arr) {
+       usable_slaves = kzalloc(struct_size(usable_slaves, arr,
+                                           bond->slave_cnt), GFP_KERNEL);
+       if (!usable_slaves) {
                ret = -ENOMEM;
-               pr_err("Failed to build slave-array.\n");
                goto out;
        }
        if (BOND_MODE(bond) == BOND_MODE_8023AD) {
@@ -4095,14 +4094,14 @@ int bond_update_slave_arr(struct bonding *bond, struct slave *skipslave)
 
                if (bond_3ad_get_active_agg_info(bond, &ad_info)) {
                        pr_debug("bond_3ad_get_active_agg_info failed\n");
-                       kfree_rcu(new_arr, rcu);
+                       kfree_rcu(usable_slaves, rcu);
                        /* No active aggragator means it's not safe to use
                         * the previous array.
                         */
-                       old_arr = rtnl_dereference(bond->slave_arr);
-                       if (old_arr) {
-                               RCU_INIT_POINTER(bond->slave_arr, NULL);
-                               kfree_rcu(old_arr, rcu);
+                       old_usable_slaves = rtnl_dereference(bond->usable_slaves);
+                       if (old_usable_slaves) {
+                               RCU_INIT_POINTER(bond->usable_slaves, NULL);
+                               kfree_rcu(old_usable_slaves, rcu);
                        }
                        goto out;
                }
@@ -4122,18 +4121,19 @@ int bond_update_slave_arr(struct bonding *bond, struct slave *skipslave)
                        continue;
 
                slave_dbg(bond->dev, slave->dev, "Adding slave to tx hash array[%d]\n",
-                         new_arr->count);
+                         usable_slaves->count);
 
-               new_arr->arr[new_arr->count++] = slave;
+               usable_slaves->arr[usable_slaves->count++] = slave;
        }
 
-       old_arr = rtnl_dereference(bond->slave_arr);
-       rcu_assign_pointer(bond->slave_arr, new_arr);
-       if (old_arr)
-               kfree_rcu(old_arr, rcu);
+       old_usable_slaves = rtnl_dereference(bond->usable_slaves);
+       rcu_assign_pointer(bond->usable_slaves, usable_slaves);
+       if (old_usable_slaves)
+               kfree_rcu(old_usable_slaves, rcu);
 out:
        if (ret != 0 && skipslave)
-               bond_skip_slave(rtnl_dereference(bond->slave_arr), skipslave);
+               bond_skip_slave(rtnl_dereference(bond->usable_slaves),
+                               skipslave);
 
        return ret;
 }
@@ -4150,7 +4150,7 @@ static netdev_tx_t bond_3ad_xor_xmit(struct sk_buff *skb,
        struct bond_up_slave *slaves;
        unsigned int count;
 
-       slaves = rcu_dereference(bond->slave_arr);
+       slaves = rcu_dereference(bond->usable_slaves);
        count = slaves ? READ_ONCE(slaves->count) : 0;
        if (likely(count)) {
                slave = slaves->arr[bond_xmit_hash(bond, skb) % count];
@@ -4457,9 +4457,9 @@ static void bond_uninit(struct net_device *bond_dev)
                __bond_release_one(bond_dev, slave->dev, true, true);
        netdev_info(bond_dev, "Released all slaves\n");
 
-       arr = rtnl_dereference(bond->slave_arr);
+       arr = rtnl_dereference(bond->usable_slaves);
        if (arr) {
-               RCU_INIT_POINTER(bond->slave_arr, NULL);
+               RCU_INIT_POINTER(bond->usable_slaves, NULL);
                kfree_rcu(arr, rcu);
        }
 
index 1bee8fdff7db04735cfed66876b55d48496f4b22..69ceb5b4a8d686013efc13da17ea30d8a487dd05 100644 (file)
@@ -205,7 +205,7 @@ struct bonding {
        struct   slave __rcu *curr_active_slave;
        struct   slave __rcu *current_arp_slave;
        struct   slave __rcu *primary_slave;
-       struct   bond_up_slave __rcu *slave_arr; /* Array of usable slaves */
+       struct   bond_up_slave __rcu *usable_slaves; /* Array of usable slaves */
        bool     force_primary;
        s32      slave_cnt; /* never change this value outside the attach/detach wrappers */
        int     (*recv_probe)(const struct sk_buff *, struct bonding *,