]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
batman-adv: retrieve ethhdr after potential skb realloc on RX
authorSven Eckelmann <sven@narfation.org>
Sun, 28 Jun 2026 04:44:13 +0000 (06:44 +0200)
committerSven Eckelmann <sven@narfation.org>
Sun, 28 Jun 2026 05:56:46 +0000 (07:56 +0200)
pskb_may_pull() in batadv_interface_rx() could reallocate the buffer behind
the skb. Variables which were pointing to the old buffer need to be
reassigned to avoid an use-after-free.

This was done correctly for the VLAN header but missed for the ethernet
header which is later used for the TT and AP isolation handling.

Cc: stable@vger.kernel.org
Reported-by: Sashiko <sashiko-bot@kernel.org>
Fixes: c6c8fea29769 ("net: Add batman-adv meshing protocol")
Fixes: c78296665c3d ("batman-adv: Check skb size before using encapsulated ETH+VLAN header")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
net/batman-adv/mesh-interface.c

index 44026810b99cea5d702aeba6d6ea261b68c5dcf4..511f70e0706a7c689e18a737ddb81adce4e6bd36 100644 (file)
@@ -434,6 +434,7 @@ void batadv_interface_rx(struct net_device *mesh_iface,
                if (!pskb_may_pull(skb, VLAN_ETH_HLEN))
                        goto dropped;
 
+               ethhdr = eth_hdr(skb);
                vhdr = skb_vlan_eth_hdr(skb);
 
                /* drop batman-in-batman packets to prevent loops */