Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f282d45c authored by Kazunori MIYAZAWA's avatar Kazunori MIYAZAWA Committed by David S. Miller
Browse files

[IPSEC]: Fix panic when using inter address familiy IPsec on loopback.

parent 83f03fa5
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -139,10 +139,8 @@ int xfrm4_rcv_encap(struct sk_buff *skb, __u16 encap_type)
	nf_reset(skb);

	if (decaps) {
		if (!(skb->dev->flags&IFF_LOOPBACK)) {
		dst_release(skb->dst);
		skb->dst = NULL;
		}
		netif_rx(skb);
		return 0;
	} else {
+2 −0
Original line number Diff line number Diff line
@@ -85,6 +85,8 @@ static int xfrm4_tunnel_output(struct xfrm_state *x, struct sk_buff *skb)
	top_iph->saddr = x->props.saddr.a4;
	top_iph->daddr = x->id.daddr.a4;

	skb->protocol = htons(ETH_P_IP);

	memset(&(IPCB(skb)->opt), 0, sizeof(struct ip_options));
	return 0;
}
+2 −4
Original line number Diff line number Diff line
@@ -104,10 +104,8 @@ int xfrm6_rcv_spi(struct sk_buff *skb, __be32 spi)
	nf_reset(skb);

	if (decaps) {
		if (!(skb->dev->flags&IFF_LOOPBACK)) {
		dst_release(skb->dst);
		skb->dst = NULL;
		}
		netif_rx(skb);
		return -1;
	} else {
+1 −0
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ static int xfrm6_tunnel_output(struct xfrm_state *x, struct sk_buff *skb)
	top_iph->hop_limit = dst_metric(dst->child, RTAX_HOPLIMIT);
	ipv6_addr_copy(&top_iph->saddr, (struct in6_addr *)&x->props.saddr);
	ipv6_addr_copy(&top_iph->daddr, (struct in6_addr *)&x->id.daddr);
	skb->protocol = htons(ETH_P_IPV6);
	return 0;
}