aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/pfcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/pfcp.c')
-rw-r--r--drivers/net/pfcp.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/pfcp.c b/drivers/net/pfcp.c
index 3ecd43cafdf0..51c67c914fad 100644
--- a/drivers/net/pfcp.c
+++ b/drivers/net/pfcp.c
@@ -65,6 +65,13 @@ static int pfcp_encap_recv(struct sock *sk, struct sk_buff *skb)
goto drop;
unparsed = pfcp_hdr(skb);
+ if (unparsed->flags & PFCP_SEID_FLAG) {
+ if (unlikely(!pskb_may_pull(skb, PFCP_HLEN +
+ offsetofend(struct pfcphdr_session,
+ seid))))
+ goto drop;
+ unparsed = pfcp_hdr(skb);
+ }
ip_tunnel_flags_zero(flags);
tun_dst = udp_tun_rx_dst(skb, sk->sk_family, flags, 0,