Re: [PATCH] tpm: tpm_tis_spi: Use wait_woken() in wait_for_tmp_stat()
From: Linus Walleij
Date: Mon May 11 2026 - 04:13:31 EST
On Sat, May 9, 2026 at 8:51 PM Jarkko Sakkinen <jarkko@xxxxxxxxxx> 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: stable@xxxxxxxxxxxxxxx # v4.19+
> Cc: Linus Walleij <linusw@xxxxxxxxxx>
> Reported-by: Stefan Wahren <wahrenst@xxxxxxx>
> Closes: https://lore.kernel.org/linux-integrity/6964bec7-3dbb-453b-89ef-9b990217a8b9@xxxxxxx/
> Fixes: 1a339b658d9d ("tpm_tis_spi: Pass the SPI IRQ down to the driver")
> Signed-off-by: Jarkko Sakkinen <jarkko@xxxxxxxxxx>
> ---
> 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 <linusw@xxxxxxxxxx>
Yours,
Linus Walleij