Re: [PATCH] hwrng: airoha: Fix wait_for_completion_timeout return value check
From: Martin Kaiser
Date: Mon Dec 08 2025 - 04:04:52 EST
Thus wrote Haotian Zhang (vulab@xxxxxxxxxxx):
> wait_for_completion_timeout() returns an unsigned long
> representing remaining jiffies, not an int. It returns
> 0 on timeout and a positive value on completion, never
> a negative error code.
> Change the type of ret to unsigned long, and update the
> check to == 0 to correctly detect timeouts.
> Fixes: e53ca8efcc5e ("hwrng: airoha - add support for Airoha EN7581 TRNG")
> Signed-off-by: Haotian Zhang <vulab@xxxxxxxxxxx>
> ---
> drivers/char/hw_random/airoha-trng.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
> diff --git a/drivers/char/hw_random/airoha-trng.c b/drivers/char/hw_random/airoha-trng.c
> index 1dbfa9505c21..3e94233e1389 100644
> --- a/drivers/char/hw_random/airoha-trng.c
> +++ b/drivers/char/hw_random/airoha-trng.c
> @@ -76,7 +76,7 @@ static int airoha_trng_irq_unmask(struct airoha_trng *trng)
> static int airoha_trng_init(struct hwrng *rng)
> {
> struct airoha_trng *trng = container_of(rng, struct airoha_trng, rng);
> - int ret;
> + unsigned long ret;
> u32 val;
> val = readl(trng->base + TRNG_NS_SEK_AND_DAT_EN);
> @@ -88,7 +88,7 @@ static int airoha_trng_init(struct hwrng *rng)
> writel(0, trng->base + TRNG_HEALTH_TEST_SW_RST);
> ret = wait_for_completion_timeout(&trng->rng_op_done, BUSY_LOOP_TIMEOUT);
> - if (ret <= 0) {
> + if (ret == 0) {
> dev_err(trng->dev, "Timeout waiting for Health Check\n");
> airoha_trng_irq_mask(trng);
> return -ENODEV;
> --
> 2.50.1.windows.1
Reviewed-by: Martin Kaiser <martin@xxxxxxxxx>