crypto: acomp - don't use stack buffer in test_acomp()
Subsystems (2)
PATCH 1/1 crypto: acomp - don't use stack buffer in test_acomp()
With virtually-mapped stacks (CONFIG_VMAP_STACK=y), using the scatterlist crypto API with stack buffers is not allowed, and with appropriate debugging options will cause the 'BUG_ON(!virt_addr_valid(buf));' in sg_set_buf() to be triggered. Use a heap buffer instead.
Fixes d7db7a882deb ("crypto: acomp - update testmgr with support for acomp")
Signed-off-by Eric Biggers <[email protected]>
--- crypto/testmgr.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
crypto/testmgr.c +8 -3
@@ -1448,17 +1448,21 @@ static int test_acomp(struct crypto_acomp *tfm, struct comp_testvec *ctemplate, {const char *algo =crypto_tfm_alg_driver_name (crypto_acomp_tfm (tfm));unsigned int i; -char output[COMP_BUF_SIZE ]; +char *output;int ret;struct scatterlist src, dst;struct acomp_req *req;struct tcrypt_result result; + output =kmalloc (COMP_BUF_SIZE ,GFP_KERNEL ); +if (!output) +return -ENOMEM ; +for (i =0 ; i < ctcount; i++) {unsigned int dlen =COMP_BUF_SIZE ;int ilen = ctemplate[i].inlen; -memset (output,0 ,sizeof (output)); +memset (output,0 , dlen);init_completion (&result.completion);sg_init_one (&src, ctemplate[i].input, ilen);sg_init_one (&dst, output, dlen);
@@ -1507,7 +1511,7 @@ static int test_acomp(struct crypto_acomp *tfm, struct comp_testvec *ctemplate,unsigned int dlen =COMP_BUF_SIZE ;int ilen = dtemplate[i].inlen; -memset (output,0 ,sizeof (output)); +memset (output,0 , dlen);init_completion (&result.completion);sg_init_one (&src, dtemplate[i].input, ilen);sg_init_one (&dst, output, dlen);
@@ -1555,6 +1559,7 @@ static int test_acomp(struct crypto_acomp *tfm, struct comp_testvec *ctemplate, ret =0 ; out: +kfree (output);return ret; }
Signature · 1 line
2.8.0.rc3.226.g39d4020
Herbert Xu
maintainerQuoted 8 lines · Eric Biggers
With virtually-mapped stacks (
CONFIG_VMAP_STACK=y), using the scatterlist crypto API with stack buffers is not allowed, and with appropriate debugging options will cause the 'BUG_ON(!virt_addr_valid(buf));' insg_set_buf()to be triggered. Use a heap buffer instead.Fixes d7db7a882deb ("crypto: acomp - update testmgr with support for acomp")Signed-off-by Eric Biggers <[email protected]>
Patch applied. Thanks.
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt