Hi, On Thu, May 9, 2024 at 11:41 AM Stephen Boyd <swboyd@xxxxxxxxxxxx> wrote: > > Dan pointed out that Smatch is concerned about this code because it uses > spin_lock_irqsave() and then calls wait_event_lock_irq() which enables > irqs before going to sleep. The comment above the function says it > should be called with interrupts enabled, but we simply hope that's true > without really confirming that. Let's add a might_sleep() here to > confirm that interrupts and preemption aren't disabled. Once we do that, > we can change the lock to be non-saving, spin_lock_irq(), to clarify > that we don't expect irqs to be disabled. If irqs are disabled by > callers they're going to be enabled anyway in the wait_event_lock_irq() > call which would be bad. > > This should make Smatch happier and find bad callers faster with the > might_sleep(). We can drop the WARN_ON() in the caller because we have > the might_sleep() now, simplifying the code. > > Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > Closes: https://lore.kernel.org/r/911181ed-c430-4592-ad26-4dc948834e08@moroto.mountain > Fixes: 2bc20f3c8487 ("soc: qcom: rpmh-rsc: Sleep waiting for tcs slots to be free") > Cc: Douglas Anderson <dianders@xxxxxxxxxxxx> > Signed-off-by: Stephen Boyd <swboyd@xxxxxxxxxxxx> > --- > drivers/soc/qcom/rpmh-rsc.c | 7 ++++--- > drivers/soc/qcom/rpmh.c | 1 - > 2 files changed, 4 insertions(+), 4 deletions(-) Reviewed-by: Douglas Anderson <dianders@xxxxxxxxxxxx>