On Mon, Feb 14, 2022 at 12:16 PM Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> wrote: > > On 2022-02-14 11:17:20 [+0100], Jason A. Donenfeld wrote: > > On 2/14/22, Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> wrote: > > > to > > > | - Does anything anywhere call get_random_xx() before the worker has a > > > | chance to run? > > > > > > Once you queue a work item I don't think that the scheduler needs to put > > > it on the CPU right away. It may have already have other tasks waiting > > > including some with a RT priority. > > > Also, the lock is irqsave() so they can be users in an interrupt > > > handler. I remember the original reason why I made it irqsave is because > > > something did kmalloc() and SLUB somehow asked for random bits. > > > > Right. So there are two sides of the questions: 1) how bad is this > > actual race, and are there any drivers that do regularly get bit by > > this? 2) There's a largeish window between workqueue_init_early() > > setting up the system highprio workqueue, and workqueue_init() > > enabling queued workers to actually run. Interrupts also get enabled > > in the interim. Does anything get bit by that window? > > This is only important during boot-up, right? Right. This is a pre-init window only. But a bunch of things are done pre-init -- siphash secret keys, aslr seeds, and so forth.