Data rates of MAX_UINT32 will schedule an unnecessary one jiffy
timeout on the call to msleep. Avoid this scenario by using 0 as the
unlimited data rate.

Signed-off-by: Jorge Ramirez-Ortiz <jo...@foundries.io>
Reviewed-by: Sumit Garg <sumit.g...@linaro.org>
---
 drivers/char/hw_random/optee-rng.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/char/hw_random/optee-rng.c 
b/drivers/char/hw_random/optee-rng.c
index 49b2e02537dd..5bc4700c4dae 100644
--- a/drivers/char/hw_random/optee-rng.c
+++ b/drivers/char/hw_random/optee-rng.c
@@ -128,7 +128,7 @@ static int optee_rng_read(struct hwrng *rng, void *buf, 
size_t max, bool wait)
                data += rng_size;
                read += rng_size;
 
-               if (wait) {
+               if (wait && pvt_data->data_rate) {
                        if (timeout-- == 0)
                                return read;
                        msleep((1000 * (max - read)) / pvt_data->data_rate);
-- 
2.17.1

Reply via email to