On Thu, Aug 06, 2020 at 05:28:14PM +0200, Laurent Vivier wrote:
.
> +static size_t rng_max_buffer_size(struct hwrng *rng)
> +{
> +     size_t size;
> +
> +     size = max_t(size_t, rng->buffer_size, SMP_CACHE_BYTES);
> +
> +     /* rng_buffer can store up to PAGE_SIZE */
> +     return min(PAGE_SIZE, size);
>  }

Rather than checking this on every read, just do it once at driver
registration time.

> @@ -614,11 +629,11 @@ static int __init hwrng_modinit(void)
>       int ret;
>  
>       /* kmalloc makes this safe for virt_to_page() in virtio_rng.c */
> -     rng_buffer = kmalloc(rng_buffer_size(), GFP_KERNEL);
> +     rng_buffer = (u8 *)get_zeroed_page(GFP_KERNEL);
>       if (!rng_buffer)
>               return -ENOMEM;

Why a zeroed page? Also please fix the out-of-sync comment.

Thanks,
-- 
Email: Herbert Xu <herb...@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Reply via email to