From: Herbert Xu Date: Mon, 15 Apr 2019 06:35:19 +0000 (+0800) Subject: crypto: xts - Fix atomic sleep when walking skcipher X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=44427c0fbc09b448b22410978a4ef6ee37599d25;p=linux.git crypto: xts - Fix atomic sleep when walking skcipher When we perform a walk in the completion function, we need to ensure that it is atomic. Reported-by: syzbot+6f72c20560060c98b566@syzkaller.appspotmail.com Fixes: 78105c7e769b ("crypto: xts - Drop use of auxiliary buffer") Cc: Signed-off-by: Herbert Xu Acked-by: Ondrej Mosnacek Signed-off-by: Herbert Xu --- diff --git a/crypto/xts.c b/crypto/xts.c index 847f54f767897..2f948328cabbd 100644 --- a/crypto/xts.c +++ b/crypto/xts.c @@ -137,8 +137,12 @@ static void crypt_done(struct crypto_async_request *areq, int err) { struct skcipher_request *req = areq->data; - if (!err) + if (!err) { + struct rctx *rctx = skcipher_request_ctx(req); + + rctx->subreq.base.flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; err = xor_tweak_post(req); + } skcipher_request_complete(req, err); }