diff options
Diffstat (limited to 'net/ipv6/ipcomp6.c')
-rw-r--r-- | net/ipv6/ipcomp6.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/net/ipv6/ipcomp6.c b/net/ipv6/ipcomp6.c index ecea6cf66055a..6cde5310cd76b 100644 --- a/net/ipv6/ipcomp6.c +++ b/net/ipv6/ipcomp6.c @@ -160,8 +160,7 @@ static int ipcomp6_output(struct xfrm_state *x, struct sk_buff *skb) if ((skb_is_nonlinear(skb) || skb_cloned(skb)) && skb_linearize(skb, GFP_ATOMIC) != 0) { - err = -ENOMEM; - goto error; + goto out_ok; } /* compression */ @@ -174,11 +173,7 @@ static int ipcomp6_output(struct xfrm_state *x, struct sk_buff *skb) tfm = *per_cpu_ptr(ipcd->tfms, cpu); err = crypto_comp_compress(tfm, start, plen, scratch, &dlen); - if (err) { - put_cpu(); - goto error; - } - if ((dlen + sizeof(struct ipv6_comp_hdr)) >= plen) { + if (err || (dlen + sizeof(struct ipv6_comp_hdr)) >= plen) { put_cpu(); goto out_ok; } @@ -198,10 +193,7 @@ static int ipcomp6_output(struct xfrm_state *x, struct sk_buff *skb) *skb->nh.raw = IPPROTO_COMP; out_ok: - err = 0; - -error: - return err; + return 0; } static void ipcomp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, |