diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index a83b5e1349ed..8023a3c0dad5 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c @@ -1469,8 +1469,6 @@ int __xfrm_lookup(struct dst_entry **dst_p, struct flowi *fl, goto dropdst; } - err = -ENOENT; - if (!policy) { /* To accelerate a bit... */ if ((dst_orig->flags & DST_NOXFRM) || @@ -1492,6 +1490,7 @@ int __xfrm_lookup(struct dst_entry **dst_p, struct flowi *fl, npols ++; xfrm_nr += pols[0]->xfrm_nr; + err = -ENOENT; if ((flags & XFRM_LOOKUP_ICMP) && !(policy->flags & XFRM_POLICY_ICMP)) goto error; @@ -1657,6 +1656,7 @@ int __xfrm_lookup(struct dst_entry **dst_p, struct flowi *fl, return err; nopol: + err = -ENOENT; if (flags & XFRM_LOOKUP_ICMP) goto dropdst; return 0;