diff options
author | Shaun Ruffell <sruffell@digium.com> | 2011-07-21 03:11:20 +0000 |
---|---|---|
committer | Shaun Ruffell <sruffell@digium.com> | 2011-07-21 03:11:20 +0000 |
commit | 154b031a2c6479ab15d9d506811ba7f18f1ba845 (patch) | |
tree | c496a916c1ba4010555a627b059c639ea7fcba9a /drivers/dahdi/voicebus | |
parent | dda515b8c5e4b726e0e32575ad47be5de2da1ae7 (diff) |
wctdm24xxp, wcte12xp: Run the ISR with interrupts disabled.
Revision 9886, "wcte12xp: Use the in-hardirq versions of
dahdi_receive/dahdi_transmit", changed the call into dahdi_receive and
dahdi_transmit to use versions that assume local interrupts are already
disabled. Not all versions of the kernel run interrupt service routines with
all interrupts disabled and therefore it was possible to lock up a CPU with a
recursive grab of the chan_lock.
When LOCKDEP was enabled (on debug kernels) interrupt handlers were run
atomically so this problem would only occur on pre 2.6.35 kernels that did not
have lockdep enabled.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@10066 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/voicebus')
-rw-r--r-- | drivers/dahdi/voicebus/voicebus.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/dahdi/voicebus/voicebus.c b/drivers/dahdi/voicebus/voicebus.c index 4efd2f9..16f3466 100644 --- a/drivers/dahdi/voicebus/voicebus.c +++ b/drivers/dahdi/voicebus/voicebus.c @@ -1881,7 +1881,7 @@ __voicebus_init(struct voicebus *vb, const char *board_name, goto cleanup; #if !defined(CONFIG_VOICEBUS_TIMER) - retval = request_irq(vb->pdev->irq, vb_isr, DAHDI_IRQ_SHARED, + retval = request_irq(vb->pdev->irq, vb_isr, DAHDI_IRQ_SHARED_DISABLED, board_name, vb); if (retval) { dev_warn(&vb->pdev->dev, "Failed to request interrupt line.\n"); |