From 071cfdc983fae2ca7444a5090a1a7cbffd048371 Mon Sep 17 00:00:00 2001 From: Shaun Ruffell Date: Thu, 21 Jul 2011 03:11:20 +0000 Subject: [PATCH] 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 git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@10066 a0bf4364-ded3-4de4-8d8a-66a801d63aff --- drivers/dahdi/voicebus/voicebus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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");