aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/ipcomp.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/ipcomp.c')
-rw-r--r--net/ipv4/ipcomp.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/net/ipv4/ipcomp.c b/net/ipv4/ipcomp.c
index 8e243589045f..3ed8b57a1002 100644
--- a/net/ipv4/ipcomp.c
+++ b/net/ipv4/ipcomp.c
@@ -80,15 +80,12 @@ out:
80 80
81static int ipcomp_input(struct xfrm_state *x, struct sk_buff *skb) 81static int ipcomp_input(struct xfrm_state *x, struct sk_buff *skb)
82{ 82{
83 int err = 0; 83 int err = -ENOMEM;
84 struct iphdr *iph; 84 struct iphdr *iph;
85 struct ip_comp_hdr *ipch; 85 struct ip_comp_hdr *ipch;
86 86
87 if ((skb_is_nonlinear(skb) || skb_cloned(skb)) && 87 if (skb_linearize_cow(skb))
88 skb_linearize(skb, GFP_ATOMIC) != 0) {
89 err = -ENOMEM;
90 goto out; 88 goto out;
91 }
92 89
93 skb->ip_summed = CHECKSUM_NONE; 90 skb->ip_summed = CHECKSUM_NONE;
94 91
@@ -158,10 +155,8 @@ static int ipcomp_output(struct xfrm_state *x, struct sk_buff *skb)
158 goto out_ok; 155 goto out_ok;
159 } 156 }
160 157
161 if ((skb_is_nonlinear(skb) || skb_cloned(skb)) && 158 if (skb_linearize_cow(skb))
162 skb_linearize(skb, GFP_ATOMIC) != 0) {
163 goto out_ok; 159 goto out_ok;
164 }
165 160
166 err = ipcomp_compress(x, skb); 161 err = ipcomp_compress(x, skb);
167 iph = skb->nh.iph; 162 iph = skb->nh.iph;