lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <aTaO_EWbszgGeqz-@akranes.kaiser.cx>
Date: Mon, 8 Dec 2025 09:40:28 +0100
From: Martin Kaiser <lists@...ser.cx>
To: Haotian Zhang <vulab@...as.ac.cn>
Cc: ansuelsmth@...il.com, olivia@...enic.com, herbert@...dor.apana.org.au,
	linux-crypto@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] hwrng: airoha: Fix wait_for_completion_timeout return
 value check

Thus wrote Haotian Zhang (vulab@...as.ac.cn):

> 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@...as.ac.cn>
> ---
>  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@...ser.cx>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ