]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
batman-adv: gw: acquire ethernet header only after skb realloc
authorSven Eckelmann <sven@narfation.org>
Sun, 28 Jun 2026 06:45:41 +0000 (08:45 +0200)
committerSven Eckelmann <sven@narfation.org>
Sun, 28 Jun 2026 07:58:22 +0000 (09:58 +0200)
The pskb_may_pull() called by batadv_get_vid() 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.

Cc: stable@vger.kernel.org
Fixes: 6c413b1c22a2 ("batman-adv: send every DHCP packet as bat-unicast")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
net/batman-adv/gateway_client.c

index 305488a74a256137b0345a246065f044cb0e76a5..a5ac82eabd250104ed38440a791626b2900fa926 100644 (file)
@@ -684,12 +684,13 @@ bool batadv_gw_out_of_range(struct batadv_priv *bat_priv,
        struct batadv_gw_node *gw_node = NULL;
        struct batadv_gw_node *curr_gw = NULL;
        struct batadv_neigh_ifinfo *curr_ifinfo, *old_ifinfo;
-       struct ethhdr *ethhdr = (struct ethhdr *)skb->data;
+       struct ethhdr *ethhdr;
        bool out_of_range = false;
        u8 curr_tq_avg;
        unsigned short vid;
 
        vid = batadv_get_vid(skb, 0);
+       ethhdr = (struct ethhdr *)skb->data;
 
        if (is_multicast_ether_addr(ethhdr->h_dest))
                goto out;