linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] vmd: Fix infinite loop executing irq's
@ 2016-08-04 22:09 Keith Busch
  2016-08-04 22:09 ` [PATCH 2/2] vmd: Synchronize with RCU freeing msi irq descs Keith Busch
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Keith Busch @ 2016-08-04 22:09 UTC (permalink / raw)
  To: linux-pci, Bjorn Helgaas; +Cc: Jon Derrick, Keith Busch

We can't initialize the list head on deletion as this causes the node
to point to itself, looping infinitely if the vmd IRQ handler happens
to be servicing that node.

The list initialization supposed to fix a bug from multiple calls to
disable the same IRQ. We can fix this instead just checking if the
previous pointer indicates it was already deleted.

Signed-off-by: Keith Busch <keith.busch@intel.com>
---
 arch/x86/pci/vmd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/pci/vmd.c b/arch/x86/pci/vmd.c
index e88b417..2294907 100644
--- a/arch/x86/pci/vmd.c
+++ b/arch/x86/pci/vmd.c
@@ -136,8 +136,8 @@ static void vmd_irq_disable(struct irq_data *data)
 	data->chip->irq_mask(data);
 
 	raw_spin_lock_irqsave(&list_lock, flags);
-	list_del_rcu(&vmdirq->node);
-	INIT_LIST_HEAD_RCU(&vmdirq->node);
+	if (vmdirq->node.prev != LIST_POISON2)
+		list_del_rcu(&vmdirq->node);
 	raw_spin_unlock_irqrestore(&list_lock, flags);
 }
 
-- 
2.7.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-09-14 22:10 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-04 22:09 [PATCH 1/2] vmd: Fix infinite loop executing irq's Keith Busch
2016-08-04 22:09 ` [PATCH 2/2] vmd: Synchronize with RCU freeing msi irq descs Keith Busch
2016-08-08 16:47   ` Jon Derrick
2016-08-29 16:07     ` Jon Derrick
2016-09-14 22:10   ` Bjorn Helgaas
2016-08-04 22:48 ` [PATCH 1/2] vmd: Fix infinite loop executing irq's Myron Stowe
2016-08-04 23:12   ` Derrick, Jonathan
2016-08-05 17:03 ` Bjorn Helgaas
2016-08-05 21:02   ` Keith Busch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).