diff options
author | David S. Miller <davem@davemloft.net> | 2015-02-17 18:48:51 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-02-17 18:48:51 -0800 |
commit | 11af4409245096cef96a41327ed970f8789e1c1c (patch) | |
tree | 80621c6623aa54dceafc5743c8a016b609d7dc46 /crypto/algif_skcipher.c | |
parent | baefc38c7ec56afcfa92594930b747a050c599b7 (diff) | |
parent | 9ece59e8fd3d017e04382709a4d48e81e00246fb (diff) | |
download | linux-crypto-11af4409245096cef96a41327ed970f8789e1c1c.tar.gz linux-crypto-11af4409245096cef96a41327ed970f8789e1c1c.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to '')
-rw-r--r-- | crypto/algif_skcipher.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/crypto/algif_skcipher.c b/crypto/algif_skcipher.c index 6fc12c3f..0c8a1e5c 100644 --- a/crypto/algif_skcipher.c +++ b/crypto/algif_skcipher.c @@ -330,6 +330,7 @@ static int skcipher_sendmsg(struct kiocb *unused, struct socket *sock, sgl = list_entry(ctx->tsgl.prev, struct skcipher_sg_list, list); sg = sgl->sg; + sg_unmark_end(sg + sgl->cur); do { i = sgl->cur; plen = min_t(int, len, PAGE_SIZE); @@ -355,6 +356,9 @@ static int skcipher_sendmsg(struct kiocb *unused, struct socket *sock, sgl->cur++; } while (len && sgl->cur < MAX_SGL_ENTS); + if (!size) + sg_mark_end(sg + sgl->cur - 1); + ctx->merge = plen & (PAGE_SIZE - 1); } @@ -401,6 +405,10 @@ static ssize_t skcipher_sendpage(struct socket *sock, struct page *page, ctx->merge = 0; sgl = list_entry(ctx->tsgl.prev, struct skcipher_sg_list, list); + if (sgl->cur) + sg_unmark_end(sgl->sg + sgl->cur - 1); + + sg_mark_end(sgl->sg + sgl->cur); get_page(page); sg_set_page(sgl->sg + sgl->cur, page, size, offset); sgl->cur++; |