On Mon, Apr 15, 2019 at 8:35 AM Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> wrote: > When we perform a walk in the completion function, we need to ensure > that it is atomic. > > Reported-by: syzbot+6f72c20560060c98b566@xxxxxxxxxxxxxxxxxxxxxxxxx > Fixes: 78105c7e769b ("crypto: xts - Drop use of auxiliary buffer") > Cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Acked-by: Ondrej Mosnacek <omosnace@xxxxxxxxxx> > > diff --git a/crypto/xts.c b/crypto/xts.c > index 847f54f76789..2f948328cabb 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); > } > -- > Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> > Home Page: http://gondor.apana.org.au/~herbert/ > PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt -- Ondrej Mosnacek <omosnace at redhat dot com> Software Engineer, Security Technologies Red Hat, Inc.