diff options
Diffstat (limited to 'kernel/irq_work.c')
| -rw-r--r-- | kernel/irq_work.c | 6 | 
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/irq_work.c b/kernel/irq_work.c index e2ebe8c71e8f..6647b33f7eb0 100644 --- a/kernel/irq_work.c +++ b/kernel/irq_work.c @@ -128,9 +128,9 @@ bool irq_work_needs_cpu(void)  static void irq_work_run_list(struct llist_head *list)  { -	unsigned long flags; -	struct irq_work *work; +	struct irq_work *work, *tmp;  	struct llist_node *llnode; +	unsigned long flags;  	BUG_ON(!irqs_disabled()); @@ -138,7 +138,7 @@ static void irq_work_run_list(struct llist_head *list)  		return;  	llnode = llist_del_all(list); -	llist_for_each_entry(work, llnode, llnode) { +	llist_for_each_entry_safe(work, tmp, llnode, llnode) {  		/*  		 * Clear the PENDING bit, after this point the @work  		 * can be re-used.  | 
