Vivek noted that many places call note_interrupt() without desc->lock being held. Since note_interrupt() which tries to unlock this lock to handle spurious interrupts accodring to http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f72fa707604c015a6625e80f269506032d5430dc Looking at note_interrupt() I found that desc->lock IS required in this function but all the places that call note_interrupt() lock it after the call. One exception from this rule is __do_IRQ(). So I move spin_lock(&desc->lock); before calling note_interrupt() in all places. Signed-off-bt: Pavel Emelianov