kernel: fix crash nf_xfrm_me_harder
This commit is contained in:
parent
639dd37fd7
commit
ab6b020a65
@ -0,0 +1,11 @@
|
||||
--- a/net/netfilter/nf_nat_core.c
|
||||
+++ b/net/netfilter/nf_nat_core.c
|
||||
@@ -98,6 +98,8 @@ int nf_xfrm_me_harder(struct net *net, s
|
||||
return err;
|
||||
|
||||
dst = skb_dst(skb);
|
||||
+ if (!dst)
|
||||
+ return -EHOSTUNREACH;
|
||||
if (dst->xfrm)
|
||||
dst = ((struct xfrm_dst *)dst)->route;
|
||||
if (!dst_hold_safe(dst))
|
||||
@ -0,0 +1,11 @@
|
||||
--- a/net/netfilter/nf_nat_core.c
|
||||
+++ b/net/netfilter/nf_nat_core.c
|
||||
@@ -118,6 +118,8 @@ int nf_xfrm_me_harder(struct net *net, s
|
||||
return err;
|
||||
|
||||
dst = skb_dst(skb);
|
||||
+ if (!dst)
|
||||
+ return -EHOSTUNREACH;
|
||||
if (dst->xfrm)
|
||||
dst = ((struct xfrm_dst *)dst)->route;
|
||||
if (!dst_hold_safe(dst))
|
||||
@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct dst_entry *dst;
|
||||
int err;
|
||||
|
||||
+ if (skb->dev && !dev_net(skb->dev)->xfrm.policy_count[XFRM_POLICY_OUT])
|
||||
+ if (!net->xfrm.policy_count[XFRM_POLICY_OUT])
|
||||
+ return 0;
|
||||
+
|
||||
err = xfrm_decode_session(skb, &fl, family);
|
||||
|
||||
@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct sock *sk = skb->sk;
|
||||
int err;
|
||||
|
||||
+ if (skb->dev && !dev_net(skb->dev)->xfrm.policy_count[XFRM_POLICY_OUT])
|
||||
+ if (!net->xfrm.policy_count[XFRM_POLICY_OUT])
|
||||
+ return 0;
|
||||
+
|
||||
err = xfrm_decode_session(skb, &fl, family);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user