[PATCH v2 1/2] test: dm: virtio_rng: Update virtio-rng test

Andre Przywara andre.przywara at arm.com
Thu Mar 19 14:00:07 CET 2026


Hi Meet,

On 3/9/26 17:55, Meet Patel wrote:
> From: Kavin Gunasekara <kavin.gunasekara at arm.com>
> 
> The virtio-rng test to verify effective handling of oversized return
> buffers checks that an (undocumented) error is raised, instead of the
> real concern, which is the surrounding buffer integrity following a rng
> function call.
> Update the test to check that the other contents of a buffer remain
> unchanged instead of looking for an error code.

thanks for the change, looks good now!

> Signed-off-by: Kavin Gunasekara <kavin.gunasekara at arm.com>
> Signed-off-by: Meet Patel <meet.patel2 at arm.com>

Reviewed-by: Andre Przywara <andre.przywara at arm.com>

Cheers,
Andre

> ---
>   test/dm/virtio_rng.c | 14 ++++++++++++--
>   1 file changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/test/dm/virtio_rng.c b/test/dm/virtio_rng.c
> index e404b08484e..5fd56ade586 100644
> --- a/test/dm/virtio_rng.c
> +++ b/test/dm/virtio_rng.c
> @@ -19,12 +19,19 @@ struct virtio_rng_priv {
>   	struct virtqueue *rng_vq;
>   };
>   
> +#define BUFFER_SIZE 16
> +#define CANARY "CANARYCANARYCANARYCANARY"
> +
>   /* Test the virtio-rng driver validates the used size */
>   static int dm_test_virtio_rng_check_len(struct unit_test_state *uts)
>   {
>   	struct udevice *bus, *dev;
>   	struct virtio_rng_priv *priv;
> -	u8 buffer[16];
> +	u8 buffer[BUFFER_SIZE + sizeof(CANARY)];
> +
> +	/* write known data to buffer */
> +	memset(buffer, 0xaa, BUFFER_SIZE);
> +	memcpy(buffer + BUFFER_SIZE, CANARY, sizeof(CANARY));
>   
>   	/* check probe success */
>   	ut_assertok(uclass_first_device_err(UCLASS_VIRTIO, &bus));
> @@ -44,7 +51,10 @@ static int dm_test_virtio_rng_check_len(struct unit_test_state *uts)
>   	priv->rng_vq->vring.used->ring[0].len = U32_MAX;
>   
>   	/* check the driver gracefully handles the error */
> -	ut_asserteq(-EIO, dm_rng_read(dev, buffer, sizeof(buffer)));
> +	dm_rng_read(dev, buffer, BUFFER_SIZE);
> +
> +	/* check for the canary bytes behind the real buffer */
> +	ut_asserteq_mem(buffer + BUFFER_SIZE, CANARY, sizeof(CANARY));
>   
>   	return 0;
>   }



More information about the U-Boot mailing list