Re: [PATCH v9 3/5] crypto: drbg - add async seeding operation

From: Stephan Mueller
Date: Thu May 21 2015 - 03:55:25 EST


Am Donnerstag, 21. Mai 2015, 05:44:08 schrieb Herbert Xu:

Hi Herbert,

> On Wed, May 20, 2015 at 10:03:45PM +0200, Stephan Mueller wrote:
> >> @@ -1487,6 +1514,7 @@ unlock:
> > */
> >
> > static int drbg_uninstantiate(struct drbg_state *drbg)
> > {
> >
> > + cancel_work_sync(&drbg->seed_work);
>
> This will just block until the work is done, i.e., until the
> pool is ready. It's no different to an uninterruptible sleep.
>
> So either just do an uninterruptible sleep, or allow the async
> seed to fail.

I think I found the issue: we cannot put interruptible and noninterruptible
sleeps onto the same wait queue. With my initial tests, I put the
uninterruptible sleep onto urandom_init_wait where also interruptible sleeps
are put onto.

So, I will create a 2nd wait queue in random.c for uninterruptible waits,
change the get_blocking_random_bytes back to void and use wait_event to wait
for the initialization.
>
> Cheers,


--
Ciao
Stephan
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/