Skip to contentSkip to conversation

virtio-pci: fix irqfd cleanup argument order

PATCH Applied Michael S. Tsirkin 5 participants 5 messages Jan 15, 2013 – Jan 20, 2013

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 virtio-pci: fix irqfd cleanup argument order

Order of arguments of kvm_virtio_pci_irqfd_release got mixed up in all calls.
As a result users see assertions during cleanup.

---

 hw/virtio-pci.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
hw/virtio-pci.c +3 -3
index 0934246..212acd8 100644
@@ -576,7 +576,7 @@ undo:
             continue;
         }
         if (proxy->vdev->guest_notifier_mask) {
-            kvm_virtio_pci_irqfd_release(proxy, vector, queue_no);
+            kvm_virtio_pci_irqfd_release(proxy, queue_no, vector);
         }
         kvm_virtio_pci_vq_vector_release(proxy, vector);
     }
@@ -602,7 +602,7 @@ static void kvm_virtio_pci_vector_release(VirtIOPCIProxy *proxy, int nvqs)
          * Otherwise, it was cleaned when masked in the frontend.
          */
         if (proxy->vdev->guest_notifier_mask) {
-            kvm_virtio_pci_irqfd_release(proxy, vector, queue_no);
+            kvm_virtio_pci_irqfd_release(proxy, queue_no, vector);
         }
         kvm_virtio_pci_vq_vector_release(proxy, vector);
     }
@@ -651,7 +651,7 @@ static void kvm_virtio_pci_vq_vector_mask(VirtIOPCIProxy *proxy,
     if (proxy->vdev->guest_notifier_mask) {
         proxy->vdev->guest_notifier_mask(proxy->vdev, queue_no, true);
     } else {
-        kvm_virtio_pci_irqfd_release(proxy, vector, queue_no);
+        kvm_virtio_pci_irqfd_release(proxy, queue_no, vector);
     }
 }
 
Signature · 1 line
MST
Reviewed-by Tested-by on v1 1/1
#1 lore raw
Quoted 34 lines · Michael S. Tsirkin

Order of arguments of kvm_virtio_pci_irqfd_release got mixed up in all calls.
As a result users see assertions during cleanup.

---

 hw/virtio-pci.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
hw/virtio-pci.c +2 -2
index 0934246..212acd8 100644
@@ -576,7 +576,7 @@ undo:
             continue;
         }
         if (proxy->vdev->guest_notifier_mask) {
-            kvm_virtio_pci_irqfd_release(proxy, vector, queue_no);
+            kvm_virtio_pci_irqfd_release(proxy, queue_no, vector);
         }
         kvm_virtio_pci_vq_vector_release(proxy, vector);
     }
@@ -602,7 +602,7 @@ static void kvm_virtio_pci_vector_release(VirtIOPCIProxy *proxy, int nvqs)
          * Otherwise, it was cleaned when masked in the frontend.
          */
         if (proxy->vdev->guest_notifier_mask) {
-            kvm_virtio_pci_irqfd_release(proxy, vector, queue_no);
+            kvm_virtio_pci_irqfd_release(proxy, queue_no, vector);
         }
         kvm_virtio_pci_vq_vector_release(proxy, vector);
     }

hw/virtio-pci.c static void kvm_virtio_pci_vq_vector_mask(VirtIOPCIProxy *proxy, · line 657

Quoted 8 lines
hw/virtio-pci.c +1 -1
@@ -651,7 +651,7 @@ static void kvm_virtio_pci_vq_vector_mask(VirtIOPCIProxy *proxy,
     if (proxy->vdev->guest_notifier_mask) {
         proxy->vdev->guest_notifier_mask(proxy->vdev, queue_no, true);
     } else {
-        kvm_virtio_pci_irqfd_release(proxy, vector, queue_no);
+        kvm_virtio_pci_irqfd_release(proxy, queue_no, vector);
     }
 }
 

Heh, even I can review this patch!

Thanks for the fix!

Laszlo

Tested-by on v1 1/1
#2 lore raw
In reply to Michael S. Tsirkin
Quoted 6 lines · Michael S. Tsirkin

Order of arguments of kvm_virtio_pci_irqfd_release got mixed up in all calls.
As a result users see assertions during cleanup.

Thank you, fixed my assertion here:
hw/virtio-pci.c:535: kvm_virtio_pci_irqfd_release: Assertion `ret == 0' failed.

Quoted 37 lines

---

 hw/virtio-pci.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
hw/virtio-pci.c +3 -3
index 0934246..212acd8 100644
@@ -576,7 +576,7 @@ undo:
             continue;
         }
         if (proxy->vdev->guest_notifier_mask) {
-            kvm_virtio_pci_irqfd_release(proxy, vector, queue_no);
+            kvm_virtio_pci_irqfd_release(proxy, queue_no, vector);
         }
         kvm_virtio_pci_vq_vector_release(proxy, vector);
     }
@@ -602,7 +602,7 @@ static void kvm_virtio_pci_vector_release(VirtIOPCIProxy *proxy, int nvqs)
          * Otherwise, it was cleaned when masked in the frontend.
          */
         if (proxy->vdev->guest_notifier_mask) {
-            kvm_virtio_pci_irqfd_release(proxy, vector, queue_no);
+            kvm_virtio_pci_irqfd_release(proxy, queue_no, vector);
         }
         kvm_virtio_pci_vq_vector_release(proxy, vector);
     }
@@ -651,7 +651,7 @@ static void kvm_virtio_pci_vq_vector_mask(VirtIOPCIProxy *proxy,
     if (proxy->vdev->guest_notifier_mask) {
         proxy->vdev->guest_notifier_mask(proxy->vdev, queue_no, true);
     } else {
-        kvm_virtio_pci_irqfd_release(proxy, vector, queue_no);
+        kvm_virtio_pci_irqfd_release(proxy, queue_no, vector);
     }
 }
 
Reviewed-by on v1 1/1
#3 lore raw
In reply to Michael S. Tsirkin
Quoted 10 lines · Michael S. Tsirkin

Order of arguments of kvm_virtio_pci_irqfd_release got mixed up in all calls.
As a result users see assertions during cleanup.

---

 hw/virtio-pci.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Thanks for the fix.