On Sat, May 9, 2026 at 8:51 PM Jarkko Sakkinen <[email protected]> wrote:

> wait_event_interruptible_timeout() evaluates its condition after setting
> the current task state to TASK_INTERRUPTIBLE.
>
> With CONFIG_DEBUG_ATOMIC_SLEEP this triggers a warning when the IRQ wait
> path is used:
>
>     tpm_tis_status()
>       tpm_tis_spi_read_bytes()
>         tpm_tis_spi_transfer_full()
>           spi_bus_lock()
>             mutex_lock()
>
> Address this with the following measures:
>
> 1. Call wait_tpm_stat_cond() only while tasking is running.
> 2. Use wait_woken() to wait for changes.
>
> Cc: [email protected] # v4.19+
> Cc: Linus Walleij <[email protected]>
> Reported-by: Stefan Wahren <[email protected]>
> Closes: 
> https://lore.kernel.org/linux-integrity/[email protected]/
> Fixes: 1a339b658d9d ("tpm_tis_spi: Pass the SPI IRQ down to the driver")
> Signed-off-by: Jarkko Sakkinen <[email protected]>
> ---
> Linus' change only unmasked a pre-existing bug but it is the change
> realizes it in tpm_tis_spi.

Took me a while to understand this but looks right to me!
Reviewed-by: Linus Walleij <[email protected]>

Yours,
Linus Walleij

Reply via email to