[PATCH 1/2] hwrng: virtio - simplify probe_common()
From: Thorsten Blum
Date: Tue Nov 03 2026 - 12:27:31 EST
Drop the redundant NULL initialization since vi is immediately
reassigned. Drop the redundant index variable and use vi->index
directly. Also call ida_free() directly and consolidate the error
cleanup paths.
Signed-off-by: Thorsten Blum <blum@xxxxxxxxxx>
---
drivers/char/hw_random/virtio-rng.c | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c
index 45d87c0614a5..f5e8e6093e27 100644
--- a/drivers/char/hw_random/virtio-rng.c
+++ b/drivers/char/hw_random/virtio-rng.c
@@ -150,17 +150,17 @@ static void virtio_cleanup(struct hwrng *rng)
static int probe_common(struct virtio_device *vdev)
{
- int err, index;
- struct virtrng_info *vi = NULL;
+ int err;
+ struct virtrng_info *vi;
vi = kzalloc_obj(struct virtrng_info);
if (!vi)
return -ENOMEM;
- vi->index = index = ida_alloc(&rng_index_ida, GFP_KERNEL);
- if (index < 0) {
- err = index;
- goto err_ida;
+ vi->index = ida_alloc(&rng_index_ida, GFP_KERNEL);
+ if (vi->index < 0) {
+ err = vi->index;
+ goto err;
}
snprintf(vi->name, sizeof(vi->name), "virtio_rng.%d", vi->index);
init_completion(&vi->have_data);
@@ -177,7 +177,8 @@ static int probe_common(struct virtio_device *vdev)
vi->vq = virtio_find_single_vq(vdev, random_recv_done, "input");
if (IS_ERR(vi->vq)) {
err = PTR_ERR(vi->vq);
- goto err_find;
+ ida_free(&rng_index_ida, vi->index);
+ goto err;
}
virtio_device_ready(vdev);
@@ -187,9 +188,7 @@ static int probe_common(struct virtio_device *vdev)
return 0;
-err_find:
- ida_free(&rng_index_ida, index);
-err_ida:
+err:
vdev->priv = NULL;
kfree(vi);
return err;