Most recent kernel where this bug did not occur: unknown (kernel used was actually 2.6.17.11 plus 1394 driver updates from end of August 2006) Problem Description: Some of libraw1394's ARM related requests cause raw1394 to call sleeping functions while interrupts are disabled. This leads to warnings (I suppose if the kernel was compiled with sleep-inside-spinlock checking) or to lockups if the sleeping functions actually need to sleep. Sep 7 20:47:50 shuttle kernel: BUG: sleeping function called from invalid context at arch/i386/lib/usercopy.c:607 Sep 7 20:47:50 shuttle kernel: in_atomic():1, irqs_disabled():1 Sep 7 20:47:50 shuttle kernel: <c011a4b1> __might_sleep+0xa1/0xc0 <c0158967> __vmalloc+0x27/0x30 Sep 7 20:47:50 shuttle kernel: <c01f5371> copy_to_user+0x21/0x80 <f89a58f5> arm_register+0x405/0x4c0 [raw1394] Sep 7 20:47:50 shuttle kernel: <f89a686e> raw1394_write+0xae/0xe0 [raw1394] <c0165fc0> vfs_write+0xd0/0x1e0 Sep 7 20:47:50 shuttle kernel: <c01661a1> sys_write+0x51/0x80 <c010315b> sysenter_past_esp+0x54/0x75 Steps to reproduce: Run any libraw1394 client with ARM handling. The above output occured at startup of Oracle's Endpoint. Actual lockups were reported too: http://article.gmane.org/gmane.linux.kernel.firewire.user/1961
Proposed patch posted: http://permalink.gmane.org/gmane.linux.kernel.firewire.devel/7825
Created attachment 9023 [details] proposed fix to arm_{register,unregister,get_buf,set_buf}
fix went into Linux 2.6.18-git16