From 2ad08d2893dfb529052c4162ab99d21a523ee261 Mon Sep 17 00:00:00 2001 From: Pan Xiuli Date: Thu, 13 Sep 2018 18:54:57 +0800 Subject: [PATCH] interrupt: fix unsafe list del Use list_for_item_safe when need to del list item Signed-off-by: Pan Xiuli --- src/lib/interrupt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/interrupt.c b/src/lib/interrupt.c index 7093e980c282..b40761bc6d36 100644 --- a/src/lib/interrupt.c +++ b/src/lib/interrupt.c @@ -89,12 +89,13 @@ static void irq_unregister_child(struct irq_desc *parent, int irq) spin_lock(&parent->lock); struct irq_desc *child; struct list_item *clist; + struct list_item *tlist; /* does child already exist ? */ if (list_is_empty(&parent->child[SOF_IRQ_BIT(irq)])) goto finish; - list_for_item(clist, &parent->child[SOF_IRQ_BIT(irq)]) { + list_for_item_safe(clist, tlist, &parent->child[SOF_IRQ_BIT(irq)]) { child = container_of(clist, struct irq_desc, irq_list); if (SOF_IRQ_ID(irq) == child->id) {