x86/PCI: VMD: Fix infinite loop executing irq's
authorKeith Busch <keith.busch@intel.com>
Tue, 23 Aug 2016 21:36:42 +0000 (16:36 -0500)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 23 Aug 2016 21:36:42 +0000 (16:36 -0500)
commit21c80c9fefc3db10b530a96eb0478c29eb28bf77
treef04f76432839643639668f8b9e011fa3dffdf741
parent5d0bdf2867825a92c0a563957a2fb059149ab0d4
x86/PCI: VMD: Fix infinite loop executing irq's

We can't initialize the list head on deletion as this causes the node to
point to itself, which causes an infinite loop if vmd_irq() happens to be
servicing that node.

The list initialization was trying to fix a bug from multiple calls to
disable the same IRQ.  Fix this instead by having the VMD driver track if
the interrupt is enabled.

[bhelgaas: changelog, add "Fixes"]
Fixes: 97e923063575 ("x86/PCI: VMD: Initialize list item in IRQ disable")
Reported-by: Grzegorz Koczot <grzegorz.koczot@intel.com>
Tested-by: Miroslaw Drost <miroslaw.drost@intel.com>
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