Hi Gilad, On Thu, May 11, 2017 at 02:53:43PM +0300, Gilad Ben-Yossef wrote: > drbg_kcapi_sym_ctr() was using wait_for_completion_interruptible() to > wait for completion of async crypto op but if a signal occurs it > may return before DMA ops of HW crypto provider finish, thus > corrupting the output buffer. > > Resolve this by using wait_for_completion() instead. > > Reported-by: Eric Biggers <ebiggers3@xxxxxxxxx> > Signed-off-by: Gilad Ben-Yossef <gilad@xxxxxxxxxxxxx> > CC: stable@xxxxxxxxxxxxxxx > --- > crypto/drbg.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/crypto/drbg.c b/crypto/drbg.c > index fa749f4..fa9054d 100644 > --- a/crypto/drbg.c > +++ b/crypto/drbg.c > @@ -1767,8 +1767,7 @@ static int drbg_kcapi_sym_ctr(struct drbg_state *drbg, > break; > case -EINPROGRESS: > case -EBUSY: > - ret = wait_for_completion_interruptible( > - &drbg->ctr_completion); > + ret = wait_for_completion(&drbg->ctr_completion); > if (!ret && !drbg->ctr_async_err) { > reinit_completion(&drbg->ctr_completion); > break; > -- wait_for_completion() doesn't return a value. This was fixed in the next patch, but it should be done in this patch. Eric