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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jan 2022 10:05:43 +0000 (11:05 +0100)
commit 429e3d123d9a50cc9882402e40e0ac912d88cfcf upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/bonding/bond_main.c

index 120c63abe1aa3bc1cfc76f7cffb612b306d9f5be..83cdaabd7b69d952b2db7b3f6468452e734b50e6 100644 (file)
@@ -3872,8 +3872,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));
 }