summaryrefslogtreecommitdiff
path: root/crypto/algif_skcipher.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2015-02-17 18:48:51 -0800
committerDavid S. Miller <davem@davemloft.net>2015-02-17 18:48:51 -0800
commit11af4409245096cef96a41327ed970f8789e1c1c (patch)
tree80621c6623aa54dceafc5743c8a016b609d7dc46 /crypto/algif_skcipher.c
parentbaefc38c7ec56afcfa92594930b747a050c599b7 (diff)
parent9ece59e8fd3d017e04382709a4d48e81e00246fb (diff)
downloadlinux-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.c8
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++;