Re: "BUG: Invalid wait context" in invalidate_batched_entropy

From: Jason A. Donenfeld
Date: Fri Jan 28 2022 - 11:04:33 EST


Hi Sebastian/Jonathan,

On Fri, Jan 28, 2022 at 9:35 AM Sebastian Andrzej Siewior
<bigeasy@xxxxxxxxxxxxx> wrote:
> This report is due to CONFIG_PROVE_LOCKING=y _and_
> CONFIG_PROVE_RAW_LOCK_NESTING=y. It reports a nesting problem
> (raw_spinlock_t -> spinlock_t lock ordering) which becomes a real
> problem on PREEMPT_RT.

Hmm, I'm still having a tough time reproducing this. I'm trying to
understand your intuition. Is the problem you see that something else
in the IRQ path uses a raw_spinlock_t, and then with that lock still
held, we call invalidate_batched_entropy(), which takes an ordinary
spinlock_t, non-raw? And taking a spinlock-t while holding a
raw_spinlock_t is illegal?

Jason