Return errors directly to simplify the control flow.

Signed-off-by: Thorsten Blum <[email protected]>
---
 drivers/char/hw_random/virtio-rng.c | 31 +++++++++++++++--------------
 1 file changed, 16 insertions(+), 15 deletions(-)

diff --git a/drivers/char/hw_random/virtio-rng.c 
b/drivers/char/hw_random/virtio-rng.c
index f5e8e6093e27..de1d0113ce6c 100644
--- a/drivers/char/hw_random/virtio-rng.c
+++ b/drivers/char/hw_random/virtio-rng.c
@@ -244,26 +244,27 @@ static int virtrng_freeze(struct virtio_device *vdev)
 
 static int virtrng_restore(struct virtio_device *vdev)
 {
+       struct virtrng_info *vi;
        int err;
 
        err = probe_common(vdev);
-       if (!err) {
-               struct virtrng_info *vi = vdev->priv;
+       if (err)
+               return err;
+       vi = vdev->priv;
 
-               /*
-                * Set hwrng_removed to ensure that virtio_read()
-                * does not block waiting for data before the
-                * registration is complete.
-                */
-               vi->hwrng_removed = true;
-               err = hwrng_register(&vi->hwrng);
-               if (!err) {
-                       vi->hwrng_register_done = true;
-                       vi->hwrng_removed = false;
-               }
-       }
+       /*
+        * Set hwrng_removed to ensure that virtio_read()
+        * does not block waiting for data before the
+        * registration is complete.
+        */
+       vi->hwrng_removed = true;
+       err = hwrng_register(&vi->hwrng);
+       if (err)
+               return err;
 
-       return err;
+       vi->hwrng_register_done = true;
+       vi->hwrng_removed = false;
+       return 0;
 }
 
 static const struct virtio_device_id id_table[] = {

Reply via email to