diff options
Diffstat (limited to 'drivers/char/hw_random/stm32-rng.c')
| -rw-r--r-- | drivers/char/hw_random/stm32-rng.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/char/hw_random/stm32-rng.c b/drivers/char/hw_random/stm32-rng.c index bc22178f83e8..a6731cf0627a 100644 --- a/drivers/char/hw_random/stm32-rng.c +++ b/drivers/char/hw_random/stm32-rng.c @@ -44,16 +44,18 @@ static int stm32_rng_read(struct hwrng *rng, void *data, size_t max, bool wait)  	pm_runtime_get_sync((struct device *) priv->rng.priv); -	while (max > sizeof(u32)) { +	while (max >= sizeof(u32)) {  		sr = readl_relaxed(priv->base + RNG_SR);  		/* Manage timeout which is based on timer and take */  		/* care of initial delay time when enabling rng	*/  		if (!sr && wait) { -			retval = readl_relaxed_poll_timeout_atomic(priv->base +			int err; + +			err = readl_relaxed_poll_timeout_atomic(priv->base  								   + RNG_SR,  								   sr, sr,  								   10, 50000); -			if (retval) +			if (err)  				dev_err((struct device *)priv->rng.priv,  					"%s: timeout %x!\n", __func__, sr);  		}  | 
