bonding: Fix extraction of ports from the packet headers
authorMoshe Tal <moshet@nvidia.com>
Sun, 16 Jan 2022 17:39:29 +0000 (19:39 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 16 Jan 2022 23:38:59 +0000 (23:38 +0000)
Wrong hash sends single stream to multiple output interfaces.

The offset calculation was relative to skb->head, fix it to be relative
to skb->data.

Fixes: a815bde56b15 ("net, bonding: Refactor bond_xmit_hash for use with
xdp_buff")
Reviewed-by: Jussi Maki <joamaki@gmail.com>
Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
Reviewed-by: Gal Pressman <gal@nvidia.com>
Signed-off-by: Moshe Tal <moshet@nvidia.com>
Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_main.c

index fce80b5..ec498ce 100644 (file)
@@ -3874,8 +3874,8 @@ u32 bond_xmit_hash(struct bonding *bond, struct sk_buff *skb)
            skb->l4_hash)
                return skb->hash;
 
-       return __bond_xmit_hash(bond, skb, skb->head, skb->protocol,
-                               skb->mac_header, skb->network_header,
+       return __bond_xmit_hash(bond, skb, skb->data, skb->protocol,
+                               skb_mac_offset(skb), skb_network_offset(skb),
                                skb_headlen(skb));
 }