summaryrefslogtreecommitdiffstats
path: root/kernel/irq/manage.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/irq/manage.c')
-rw-r--r--kernel/irq/manage.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 591cfe901162..123a227d3357 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -1025,10 +1025,7 @@ static int irq_thread(void *data)
1025 * This is the regular exit path. __free_irq() is stopping the 1025 * This is the regular exit path. __free_irq() is stopping the
1026 * thread via kthread_stop() after calling 1026 * thread via kthread_stop() after calling
1027 * synchronize_irq(). So neither IRQTF_RUNTHREAD nor the 1027 * synchronize_irq(). So neither IRQTF_RUNTHREAD nor the
1028 * oneshot mask bit can be set. We cannot verify that as we 1028 * oneshot mask bit can be set.
1029 * cannot touch the oneshot mask at this point anymore as
1030 * __setup_irq() might have given out currents thread_mask
1031 * again.
1032 */ 1029 */
1033 task_work_cancel(current, irq_thread_dtor); 1030 task_work_cancel(current, irq_thread_dtor);
1034 return 0; 1031 return 0;
@@ -1245,7 +1242,9 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
1245 /* 1242 /*
1246 * Protects against a concurrent __free_irq() call which might wait 1243 * Protects against a concurrent __free_irq() call which might wait
1247 * for synchronize_irq() to complete without holding the optional 1244 * for synchronize_irq() to complete without holding the optional
1248 * chip bus lock and desc->lock. 1245 * chip bus lock and desc->lock. Also protects against handing out
1246 * a recycled oneshot thread_mask bit while it's still in use by
1247 * its previous owner.
1249 */ 1248 */
1250 mutex_lock(&desc->request_mutex); 1249 mutex_lock(&desc->request_mutex);
1251 1250