x86/PCI: VMD: Initialize list item in IRQ disable
authorKeith Busch <keith.busch@intel.com>
Tue, 17 May 2016 17:22:18 +0000 (11:22 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 13 Jun 2016 21:03:03 +0000 (16:03 -0500)
Multiple calls to disable an IRQ would have caused the driver to
dereference a poisoned list item.  This re-initializes the list to allow
multiple requests to disable the IRQ.

Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by Jon Derrick: <jonathan.derrick@intel.com>

arch/x86/pci/vmd.c

index b1662bf17937fe9756bd2990ebbae5bacd1721bf..3519a1578752ac7f04bd57435dba0c1ad9cad5bd 100644 (file)
@@ -135,6 +135,7 @@ static void vmd_irq_disable(struct irq_data *data)
 
        raw_spin_lock(&list_lock);
        list_del_rcu(&vmdirq->node);
+       INIT_LIST_HEAD_RCU(&vmdirq->node);
        raw_spin_unlock(&list_lock);
 }