diff options
| author | Thomas Gleixner <[email protected]> | 2012-03-15 21:55:21 +0000 |
|---|---|---|
| committer | Thomas Gleixner <[email protected]> | 2012-03-16 10:27:28 +0000 |
| commit | e04268b0effc0ceea366c50b3107baad9edadafa (patch) | |
| tree | 0248960f688b504d819a2cf1c11218edec962597 /lib/string_helpers.c | |
| parent | genirq: Flush the irq thread on synchronization (diff) | |
| download | kernel-e04268b0effc0ceea366c50b3107baad9edadafa.tar.gz kernel-e04268b0effc0ceea366c50b3107baad9edadafa.zip | |
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 <[email protected]>
Cc: Ido Yariv <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Thomas Gleixner <[email protected]>
Diffstat (limited to 'lib/string_helpers.c')
0 files changed, 0 insertions, 0 deletions
