diff options
Diffstat (limited to 'drivers/net/pfcp.c')
| -rw-r--r-- | drivers/net/pfcp.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/pfcp.c b/drivers/net/pfcp.c index 51c67c914fad..0c511b988e05 100644 --- a/drivers/net/pfcp.c +++ b/drivers/net/pfcp.c @@ -81,7 +81,7 @@ static int pfcp_encap_recv(struct sock *sk, struct sk_buff *skb) md = ip_tunnel_info_opts(&tun_dst->u.tun_info); if (unlikely(!md)) - goto drop; + goto drop_dst; if (unparsed->flags & PFCP_SEID_FLAG) pfcp_session_recv(pfcp, skb, md); @@ -94,7 +94,7 @@ static int pfcp_encap_recv(struct sock *sk, struct sk_buff *skb) if (unlikely(iptunnel_pull_header(skb, PFCP_HLEN, skb->protocol, !net_eq(sock_net(sk), dev_net(pfcp->dev))))) - goto drop; + goto drop_dst; skb_dst_set(skb, (struct dst_entry *)tun_dst); @@ -105,6 +105,8 @@ static int pfcp_encap_recv(struct sock *sk, struct sk_buff *skb) gro_cells_receive(&pfcp->gro_cells, skb); return 0; +drop_dst: + dst_release(&tun_dst->dst); drop: kfree_skb(skb); return 0; |
