Skip to content

Commit 0e49409

Browse files
congwangdavem330
authored andcommitted
gre: refetch erspan header from skb->data after pskb_may_pull()
After pskb_may_pull() we should always refetch the header pointers from the skb->data in case it got reallocated. In gre_parse_header(), the erspan header is still fetched from the 'options' pointer which is fetched before pskb_may_pull(). Found this during code review of a KMSAN bug report. Fixes: cb73ee4 ("net: ip_gre: use erspan key field for tunnel lookup") Cc: Lorenzo Bianconi <[email protected]> Signed-off-by: Cong Wang <[email protected]> Acked-by: Lorenzo Bianconi <[email protected]> Acked-by: William Tu <[email protected]> Reviewed-by: Simon Horman <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 02a896c commit 0e49409

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

net/ipv4/gre_demux.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ int gre_parse_header(struct sk_buff *skb, struct tnl_ptk_info *tpi,
127127
if (!pskb_may_pull(skb, nhs + hdr_len + sizeof(*ershdr)))
128128
return -EINVAL;
129129

130-
ershdr = (struct erspan_base_hdr *)options;
130+
ershdr = (struct erspan_base_hdr *)(skb->data + nhs + hdr_len);
131131
tpi->key = cpu_to_be32(get_session_id(ershdr));
132132
}
133133

0 commit comments

Comments
 (0)