mirror of
https://github.com/torvalds/linux.git
synced 2026-10-03 17:59:02 +02:00
In bond_do_alb_xmit() and rlb_arp_xmit(), make sure to unclone
skb head via skb_cow_head() before modifying the source MAC address
(Ethernet header and ARP payload) to avoid silent corruption if
the skb is shared or cloned. Avoid caching the header pointers
across skb_cow_head().
In rlb_arp_xmit(), only modify arp->mac_src if it differs from
tx_slave->dev->dev_addr to avoid an unnecessary copy and head
reallocation.
Also, we should not assume mac header is set in output path.
Use skb_eth_hdr() instead of eth_hdr() to fix the issue,
and remove now redundant skb_reset_mac_header() calls.
Fixes:
|
||
|---|---|---|
| .. | ||
| bond_3ad.c | ||
| bond_alb.c | ||
| bond_debugfs.c | ||
| bond_main.c | ||
| bond_netlink.c | ||
| bond_options.c | ||
| bond_procfs.c | ||
| bond_sysfs_slave.c | ||
| bond_sysfs.c | ||
| Makefile | ||