virtio modern: fix up fallback logic with force_legacy

This bails out if legacy driver succeeds - not what we wanted.

Signed-off-by: Michael S. Tsirkin <m...@redhat.com>
Tested-by: Gerd Hoffmann <kra...@redhat.com>
---
 drivers/virtio/virtio_pci_common.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/virtio/virtio_pci_common.c 
b/drivers/virtio/virtio_pci_common.c
index 0f87b99..e894eb2 100644
--- a/drivers/virtio/virtio_pci_common.c
+++ b/drivers/virtio/virtio_pci_common.c
@@ -516,18 +516,14 @@ static int virtio_pci_probe(struct pci_dev *pci_dev,
        if (force_legacy) {
                rc = virtio_pci_legacy_probe(vp_dev);
                /* Also try modern mode if we can't map BAR0 (no IO space). */
-               if (rc != -ENODEV && rc != -ENOMEM)
-                       return rc;
-
-               rc = virtio_pci_modern_probe(vp_dev);
+               if (rc == -ENODEV || rc == -ENOMEM)
+                       rc = virtio_pci_modern_probe(vp_dev);
                if (rc)
                        goto err_probe;
        } else {
                rc = virtio_pci_modern_probe(vp_dev);
-               if (rc != -ENODEV)
-                       return rc;
-
-               rc = virtio_pci_legacy_probe(vp_dev);
+               if (rc == -ENODEV)
+                       rc = virtio_pci_legacy_probe(vp_dev);
                if (rc)
                        goto err_probe;
        }
-- 
MST

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to