If the device fails to start, read the status from the
device and return early.

Fixes: 57912824615f ("net/virtio-user: support vhost status setting")
Cc: sta...@dpdk.org

Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com>
---
 drivers/net/virtio/virtio_user_ethdev.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/net/virtio/virtio_user_ethdev.c 
b/drivers/net/virtio/virtio_user_ethdev.c
index d32abec327..78b1ed9ace 100644
--- a/drivers/net/virtio/virtio_user_ethdev.c
+++ b/drivers/net/virtio/virtio_user_ethdev.c
@@ -90,10 +90,15 @@ virtio_user_set_status(struct virtio_hw *hw, uint8_t status)
        if (status & VIRTIO_CONFIG_STATUS_FEATURES_OK &&
                        ~old_status & VIRTIO_CONFIG_STATUS_FEATURES_OK)
                virtio_user_dev_set_features(dev);
-       if (status & VIRTIO_CONFIG_STATUS_DRIVER_OK)
-               virtio_user_start_device(dev);
-       else if (status == VIRTIO_CONFIG_STATUS_RESET)
+
+       if (status & VIRTIO_CONFIG_STATUS_DRIVER_OK) {
+               if (virtio_user_start_device(dev)) {
+                       virtio_user_dev_update_status(dev);
+                       return;
+               }
+       } else if (status == VIRTIO_CONFIG_STATUS_RESET) {
                virtio_user_reset(hw);
+       }
 
        virtio_user_dev_set_status(dev, status);
 }
-- 
2.38.1

Reply via email to