summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-05-21 17:16:49 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2015-05-21 17:16:49 -0700
commit4e162cdaa04aef597fab3bf2b413dcd8a6f2a9ae (patch)
treefbb2f45dac8ac920bbc1ec5eaac46fe52e1527d6
parent0f792db0c4f74e99a1a9ccc6694abf60c4b41a5a (diff)
parent8b7fcb1ae794ff4e00b4e2e152879715e50602de (diff)
downloadlinux-crypto-4e162cdaa04aef597fab3bf2b413dcd8a6f2a9ae.tar.gz
linux-crypto-4e162cdaa04aef597fab3bf2b413dcd8a6f2a9ae.zip
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto fix from Herbert Xu: "This fixes a the crash in the newly added algif_aead interface when it tries to link SG lists" * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: crypto: algif_aead - fix invalid sgl linking
Diffstat (limited to '')
-rw-r--r--crypto/algif_aead.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/crypto/algif_aead.c b/crypto/algif_aead.c
index 00a6fe16..69abada2 100644
--- a/crypto/algif_aead.c
+++ b/crypto/algif_aead.c
@@ -33,7 +33,7 @@ struct aead_ctx {
/*
* RSGL_MAX_ENTRIES is an artificial limit where user space at maximum
* can cause the kernel to allocate RSGL_MAX_ENTRIES * ALG_MAX_PAGES
- * bytes
+ * pages
*/
#define RSGL_MAX_ENTRIES ALG_MAX_PAGES
struct af_alg_sgl rsgl[RSGL_MAX_ENTRIES];
@@ -435,11 +435,10 @@ static int aead_recvmsg(struct socket *sock, struct msghdr *msg, size_t ignored,
if (err < 0)
goto unlock;
usedpages += err;
- /* chain the new scatterlist with initial list */
+ /* chain the new scatterlist with previous one */
if (cnt)
- scatterwalk_crypto_chain(ctx->rsgl[0].sg,
- ctx->rsgl[cnt].sg, 1,
- sg_nents(ctx->rsgl[cnt-1].sg));
+ af_alg_link_sg(&ctx->rsgl[cnt-1], &ctx->rsgl[cnt]);
+
/* we do not need more iovecs as we have sufficient memory */
if (outlen <= usedpages)
break;