Message ID | 1488209456-7653-1-git-send-email-ard.biesheuvel@linaro.org |
---|---|
State | Accepted |
Commit | 3b30460c5b0ed762be75a004e924ec3f8711e032 |
Headers | show |
On Mon, 2017-02-27 at 15:30 +0000, Ard Biesheuvel wrote: > Commit f15f05b0a5de ("crypto: ccm - switch to separate cbcmac > driver") > refactored the CCM driver to allow separate implementations of the > underlying MAC to be provided by a platform. However, in doing so, it > moved some data from the linear region to the stack, which violates > the > SG constraints when the stack is virtually mapped. > > So move idata/odata back to the request ctx struct, of which we can > reasonably expect that it has been allocated using kmalloc() et al. > > Reported-by: Johannes Berg <johannes@sipsolutions.net> > Fixes: f15f05b0a5de ("crypto: ccm - switch to separate cbcmac > driver") > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Tested-by: Johannes Berg <johannes@sipsolutions.net> Thanks for the quick fix! johannes
On Mon, Feb 27, 2017 at 03:30:56PM +0000, Ard Biesheuvel wrote: > Commit f15f05b0a5de ("crypto: ccm - switch to separate cbcmac driver") > refactored the CCM driver to allow separate implementations of the > underlying MAC to be provided by a platform. However, in doing so, it > moved some data from the linear region to the stack, which violates the > SG constraints when the stack is virtually mapped. > > So move idata/odata back to the request ctx struct, of which we can > reasonably expect that it has been allocated using kmalloc() et al. > > Reported-by: Johannes Berg <johannes@sipsolutions.net> > Fixes: f15f05b0a5de ("crypto: ccm - switch to separate cbcmac driver") > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Patch applied. Thanks. -- Email: Herbert Xu <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
diff --git a/crypto/ccm.c b/crypto/ccm.c index 442848807a52..1ce37ae0ce56 100644 --- a/crypto/ccm.c +++ b/crypto/ccm.c @@ -45,6 +45,7 @@ struct crypto_rfc4309_req_ctx { struct crypto_ccm_req_priv_ctx { u8 odata[16]; + u8 idata[16]; u8 auth_tag[16]; u32 flags; struct scatterlist src[3]; @@ -183,8 +184,8 @@ static int crypto_ccm_auth(struct aead_request *req, struct scatterlist *plain, AHASH_REQUEST_ON_STACK(ahreq, ctx->mac); unsigned int assoclen = req->assoclen; struct scatterlist sg[3]; - u8 odata[16]; - u8 idata[16]; + u8 *odata = pctx->odata; + u8 *idata = pctx->idata; int ilen, err; /* format control data for input */
Commit f15f05b0a5de ("crypto: ccm - switch to separate cbcmac driver") refactored the CCM driver to allow separate implementations of the underlying MAC to be provided by a platform. However, in doing so, it moved some data from the linear region to the stack, which violates the SG constraints when the stack is virtually mapped. So move idata/odata back to the request ctx struct, of which we can reasonably expect that it has been allocated using kmalloc() et al. Reported-by: Johannes Berg <johannes@sipsolutions.net> Fixes: f15f05b0a5de ("crypto: ccm - switch to separate cbcmac driver") Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> --- crypto/ccm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -- 2.7.4