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
This commit is contained in:
commit
e51a363056
1 changed files with 4 additions and 5 deletions
|
@ -33,7 +33,7 @@ struct aead_ctx {
|
||||||
/*
|
/*
|
||||||
* RSGL_MAX_ENTRIES is an artificial limit where user space at maximum
|
* RSGL_MAX_ENTRIES is an artificial limit where user space at maximum
|
||||||
* can cause the kernel to allocate RSGL_MAX_ENTRIES * ALG_MAX_PAGES
|
* can cause the kernel to allocate RSGL_MAX_ENTRIES * ALG_MAX_PAGES
|
||||||
* bytes
|
* pages
|
||||||
*/
|
*/
|
||||||
#define RSGL_MAX_ENTRIES ALG_MAX_PAGES
|
#define RSGL_MAX_ENTRIES ALG_MAX_PAGES
|
||||||
struct af_alg_sgl rsgl[RSGL_MAX_ENTRIES];
|
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)
|
if (err < 0)
|
||||||
goto unlock;
|
goto unlock;
|
||||||
usedpages += err;
|
usedpages += err;
|
||||||
/* chain the new scatterlist with initial list */
|
/* chain the new scatterlist with previous one */
|
||||||
if (cnt)
|
if (cnt)
|
||||||
scatterwalk_crypto_chain(ctx->rsgl[0].sg,
|
af_alg_link_sg(&ctx->rsgl[cnt-1], &ctx->rsgl[cnt]);
|
||||||
ctx->rsgl[cnt].sg, 1,
|
|
||||||
sg_nents(ctx->rsgl[cnt-1].sg));
|
|
||||||
/* we do not need more iovecs as we have sufficient memory */
|
/* we do not need more iovecs as we have sufficient memory */
|
||||||
if (outlen <= usedpages)
|
if (outlen <= usedpages)
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Reference in a new issue