Bug 2656

Summary: Dead lock in stop_dma_rcv_ctx
Product: Drivers Reporter: Herbert Xu (herbert)
Component: IEEE1394Assignee: Ben Collins (bcollins)
Status: CLOSED PATCH_ALREADY_AVAILABLE    
Severity: normal CC: bonnaud, bunk, stefanr
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.5 Subsystem:
Regression: --- Bisected commit-id:

Description Herbert Xu 2004-05-07 23:01:59 UTC
This bug was reported in http://bugs.debian.org/234365

The problem is that tasklet_kill is being called with IRQs disabled.  The IRQs
are disabled in  handle_iso_listen.  As the interrupts are off, the tasklet will
never fire.  Hence the tasklet_kill call never returns.

The call chain looks like:

 [<f8a9cea6>] ohci1394_unregister_iso_tasklet+0x16/0xa3 [ohci1394]
 [<f8a9bb76>] stop_dma_rcv_ctx+0x76/0x80 [ohci1394]
 [<f8a993d9>] ohci_devctl+0x579/0x640 [ohci1394]
 [<f8ab12dc>] hpsb_unlisten_channel+0x3c/0x60 [ieee1394]
 [<f8aa2e43>] handle_iso_listen+0x163/0x1a0 [raw1394]
 [<f8aa5eb6>] state_connected+0x126/0x2c0 [raw1394]
 [<f8aa6103>] raw1394_write+0xb3/0x120 [raw1394]
 [<c016026d>] vfs_write+0xed/0x160
 [<c0160392>] sys_write+0x42/0x70
 [<c010959b>] syscall_call+0x7/0xb
Comment 1 Stefan Richter 2005-10-29 05:17:47 UTC
There was a patch included in Linux 2.6.14 which could affect the problem.
http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4a9949d7ac9e2bc51939f27b184be6e1bd99004e
Laurent, could you test it?
Comment 2 Adrian Bunk 2006-02-02 16:01:41 UTC
I'm assuming this issue is already fixed.

Please reopen this bug if it's still present in kernel 2.6.16-rc1.