On Mon, Apr 15, 2019 at 8:37 AM Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> wrote: > > When we perform a walk in the completion function, we need to ensure > that it is atomic. > > Fixes: ac3c8f36c31d ("crypto: lrw - Do not use auxiliary buffer") > Cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Acked-by: Ondrej Mosnacek <omosnace@xxxxxxxxxx> > > diff --git a/crypto/lrw.c b/crypto/lrw.c > index 0430ccd08728..08a0e458bc3e 100644 > --- a/crypto/lrw.c > +++ b/crypto/lrw.c > @@ -212,8 +212,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.