linux/kernel/irq
Thomas Gleixner e04268b0ef genirq: Remove paranoid warnons and bogus fixups
Alexander pointed out that the warnons in the regular exit path are
bogus and the thread_mask one actually could be triggered when
__setup_irq() hands out that thread_mask again after __free_irq()
dropped irq_desc->lock.

Thinking more about it, neither IRQTF_RUNTHREAD nor the bit in
thread_mask can be set as this is the regular exit path. We come here
due to:
	__free_irq()
	   remove action from desc
	   synchronize_irq()
	   kthread_stop()

So synchronize_irq() makes sure that the thread finished running and
cleaned up both the thread_active count and thread_mask. After that
point nothing can set IRQTF_RUNTHREAD on this action. So the warnons
and the cleanups are pointless.

Reported-by: Alexander Gordeev <agordeev@redhat.com>
Cc: Ido Yariv <ido@wizery.com>
Link: http://lkml.kernel.org/r/20120315190755.GA6732@dhcp-26-207.brq.redhat.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2012-03-16 11:27:28 +01:00
..
autoprobe.c genirq: Handle pending irqs in irq_startup() 2012-02-15 11:56:59 +01:00
chip.c Merge branch 'linus' into irq/core 2012-03-13 16:35:16 +01:00
debug.h genirq: Support per-IRQ thread disabling. 2011-04-23 15:56:24 +02:00
devres.c devres: fix possible use after free 2011-07-25 20:57:14 -07:00
dummychip.c genirq: Remove compat code 2011-03-29 14:48:19 +02:00
generic-chip.c kernel: Fix files explicitly needing EXPORT_SYMBOL infrastructure 2011-10-31 19:30:05 -04:00
handle.c genirq: Flush the irq thread on synchronization 2012-03-14 11:56:20 +01:00
internals.h Merge branch 'linus' into irq/core 2012-03-13 16:35:16 +01:00
irqdesc.c irq: don't put module.h into irq.h for tracking irqgen modules. 2011-10-31 19:32:35 -04:00
irqdomain.c devicetree/next changes queued for v3.3 merge window 2012-01-07 12:18:52 -08:00
Kconfig irq: add irq_domain translation infrastructure 2011-07-28 01:32:04 -06:00
Makefile irq: add irq_domain translation infrastructure 2011-07-28 01:32:04 -06:00
manage.c genirq: Remove paranoid warnons and bogus fixups 2012-03-16 11:27:28 +01:00
migration.c Fix common misspellings 2011-03-31 11:26:23 -03:00
pm.c genirq: Add IRQF_RESUME_EARLY and resume such IRQs earlier 2011-10-17 11:42:49 +02:00
proc.c irq: Remove smp_affinity_list when unregister irq proc 2011-05-26 13:15:28 +02:00
resend.c genirq: Remove compat code 2011-03-29 14:48:19 +02:00
settings.h genirq: Add support for per-cpu dev_id interrupts 2011-10-03 15:35:26 +02:00
spurious.c module_param: make bool parameters really bool (core code) 2012-01-13 09:32:18 +10:30