net/mlx5e: Avoid unbounded peer devices when unpairing TC hairpin rules
[sfrench/cifs-2.6.git] / drivers / net / net_failover.c
index 4f390fa557e4ba0c897b20faefaa85b03f4ec70a..7ae1856d1f185207222fdc22907a8056b68ca057 100644 (file)
@@ -115,7 +115,8 @@ static netdev_tx_t net_failover_start_xmit(struct sk_buff *skb,
 }
 
 static u16 net_failover_select_queue(struct net_device *dev,
-                                    struct sk_buff *skb, void *accel_priv,
+                                    struct sk_buff *skb,
+                                    struct net_device *sb_dev,
                                     select_queue_fallback_t fallback)
 {
        struct net_failover_info *nfo_info = netdev_priv(dev);
@@ -128,9 +129,9 @@ static u16 net_failover_select_queue(struct net_device *dev,
 
                if (ops->ndo_select_queue)
                        txq = ops->ndo_select_queue(primary_dev, skb,
-                                                   accel_priv, fallback);
+                                                   sb_dev, fallback);
                else
-                       txq = fallback(primary_dev, skb);
+                       txq = fallback(primary_dev, skb, NULL);
 
                qdisc_skb_cb(skb)->slave_dev_queue_mapping = skb->queue_mapping;
 
@@ -219,14 +220,14 @@ static int net_failover_change_mtu(struct net_device *dev, int new_mtu)
        struct net_device *primary_dev, *standby_dev;
        int ret = 0;
 
-       primary_dev = rcu_dereference(nfo_info->primary_dev);
+       primary_dev = rtnl_dereference(nfo_info->primary_dev);
        if (primary_dev) {
                ret = dev_set_mtu(primary_dev, new_mtu);
                if (ret)
                        return ret;
        }
 
-       standby_dev = rcu_dereference(nfo_info->standby_dev);
+       standby_dev = rtnl_dereference(nfo_info->standby_dev);
        if (standby_dev) {
                ret = dev_set_mtu(standby_dev, new_mtu);
                if (ret) {