aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6')
-rw-r--r--net/ipv6/esp6.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c
index f8bb136d3711..ab17b5e62355 100644
--- a/net/ipv6/esp6.c
+++ b/net/ipv6/esp6.c
@@ -110,7 +110,9 @@ static int esp6_output(struct xfrm_state *x, struct sk_buff *skb)
110 goto unlock; 110 goto unlock;
111 } 111 }
112 sg_init_table(sg, nfrags); 112 sg_init_table(sg, nfrags);
113 skb_to_sgvec(skb, sg, esph->enc_data+esp->conf.ivlen-skb->data, clen); 113 sg_mark_end(sg, skb_to_sgvec(skb, sg, esph->enc_data +
114 esp->conf.ivlen -
115 skb->data, clen));
114 err = crypto_blkcipher_encrypt(&desc, sg, sg, clen); 116 err = crypto_blkcipher_encrypt(&desc, sg, sg, clen);
115 if (unlikely(sg != &esp->sgbuf[0])) 117 if (unlikely(sg != &esp->sgbuf[0]))
116 kfree(sg); 118 kfree(sg);
@@ -207,7 +209,9 @@ static int esp6_input(struct xfrm_state *x, struct sk_buff *skb)
207 } 209 }
208 } 210 }
209 sg_init_table(sg, nfrags); 211 sg_init_table(sg, nfrags);
210 skb_to_sgvec(skb, sg, sizeof(*esph) + esp->conf.ivlen, elen); 212 sg_mark_end(sg, skb_to_sgvec(skb, sg,
213 sizeof(*esph) + esp->conf.ivlen,
214 elen));
211 ret = crypto_blkcipher_decrypt(&desc, sg, sg, elen); 215 ret = crypto_blkcipher_decrypt(&desc, sg, sg, elen);
212 if (unlikely(sg != &esp->sgbuf[0])) 216 if (unlikely(sg != &esp->sgbuf[0]))
213 kfree(sg); 217 kfree(sg);