]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
batman-adv: fix VLAN priority offset
authorSven Eckelmann <sven@narfation.org>
Thu, 2 Jul 2026 18:45:24 +0000 (20:45 +0200)
committerSven Eckelmann <sven@narfation.org>
Thu, 2 Jul 2026 19:20:38 +0000 (21:20 +0200)
The batadv_skb_set_priority() receives an SKB with the inner ethernet
header at position "offset". When it tries to extract the IPv4 and IPv6
header, it needs to skip the ethernet header to get access to the IP
header.

But for VLAN header, it performs the access with the struct vlan_ethhdr.
This struct contains both both the ethernet header and the VLAN header. It
is therefore incorrect to skip over the whole vlan_ethhdr size to get
access to the vlan_ethhdr.

Cc: stable@vger.kernel.org
Fixes: c54f38c9aa22 ("batman-adv: set skb priority according to content")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
net/batman-adv/main.c

index 4d3807a645b78b639c4f3d0a9cdc193cd936d050..8844e40e6a80345bcdc4149824c2d3be696c963b 100644 (file)
@@ -368,7 +368,7 @@ void batadv_skb_set_priority(struct sk_buff *skb, int offset)
 
        switch (ethhdr->h_proto) {
        case htons(ETH_P_8021Q):
-               vhdr = skb_header_pointer(skb, offset + sizeof(*vhdr),
+               vhdr = skb_header_pointer(skb, offset,
                                          sizeof(*vhdr), &vhdr_tmp);
                if (!vhdr)
                        return;