bug: sleeping function called from invalid context ... libertas/cmd.c

Dan Williams dcbw at redhat.com
Mon Jun 22 10:33:42 EDT 2009


On Fri, 2009-06-19 at 10:55 -0400, Paul Fox wrote:
> hi --
> 
> on the OLPC XO laptop, i'm seeing the following backtrace fairly
> often.  my network management program uses iwconfig a lot, so i
> may see it more than others might.  i'm running 2.6.30 (slightly
> OLPC-modified, but not at this level), so i think the libertas
> driver is pretty current.
> 
> btw, this has been mentioned before on this list:
>     http://lists.infradead.org/pipermail/libertas-dev/2008-May/001532.html
> but i didn't see a resolution -- was there one?  (i haven't yet
> convinced myself of exactly when it occurs for me, so i can't say
> my symptom is identical to that poster's.)

This occurs because the GET_LOG command is sent from the get_stats
handler in wext.c, and that grabs some spinlocks and disables
interrupts.  The only way to fix this is to cache the values in the
driver and check them periodically or when data comes in or something
like that, and the reflect the cached values from the get_stats WEXT
handler.  That means cat /proc/net/wireless and such won't always return
current statistics, but its the best we can do for now.

Dan

> paul
> 
> 
>  [47060.669580] BUG: sleeping function called from invalid context at drivers/net/wireless/libertas/cmd.c:2084
>  [47060.669615] in_atomic(): 1, irqs_disabled(): 0, pid: 1994, name: iwconfig
>  [47060.669646] Pid: 1994, comm: iwconfig Tainted: G        W  2.6.30pgf #10
>  [47060.669667] Call Trace:
>  [47060.669710]  [<c0411753>] __might_sleep+0xd6/0xdb
>  [47060.669853]  [<cc8154d8>] __lbs_cmd+0x8d/0x17c [libertas]
>  [47060.669891]  [<c051ed4d>] ? vsnprintf+0x22a/0x267
>  [47060.670087]  [<cc813366>] lbs_get_wireless_stats+0x1c9/0x2f3 [libertas]
>  [47060.670183]  [<cc814d7f>] ? lbs_cmd_copyback+0x0/0x48 [libertas]
>  [47060.670185]  [<c065b9fc>] wireless_seq_show+0x45/0xdd
>  [47060.670185]  [<c048455c>] seq_read+0x2a3/0x372
>  [47060.670185]  [<c04a2fcf>] proc_reg_read+0x6a/0x84
>  [47060.670185]  [<c04842b9>] ? seq_read+0x0/0x372
>  [47060.670185]  [<c04a2fcf>] ? proc_reg_read+0x6a/0x84
>  [47060.670185]  [<c047066b>] vfs_read+0x88/0x106
>  [47060.670185]  [<c04a2f65>] ? proc_reg_read+0x0/0x84
>  [47060.670185]  [<c04707a2>] sys_read+0x4a/0x7a
>  [47060.670185]  [<c0403434>] sysenter_do_call+0x12/0x26
>  [47060.670185]  [<c0403434>] ? sysenter_do_call+0x12/0x26
>  [47060.670185] BUG: scheduling while atomic: iwconfig/1994/0x00000002
>  [47060.670185] Modules linked in: rfcomm bnep l2cap uinput usb8xxx libertas btusb bluetooth usbhid mousedev lib80211 psmouse ehci_hcd serio_raw ohci_hcd cs5535_gpio usbcore [last unloaded: rfcomm]
>  [47060.670185] Pid: 1994, comm: iwconfig Tainted: G        W  2.6.30pgf #10
>  [47060.670185] Call Trace:
>  [47060.670185]  [<c041241c>] __schedule_bug+0x47/0x4c
>  [47060.670185]  [<c06629d5>] __schedule+0x6e/0x47e
>  [47060.670185]  [<c0405371>] ? show_trace+0x10/0x14
>  [47060.670185]  [<c0662df7>] schedule+0x12/0x2b
>  [47060.670185]  [<c0662df7>] ? schedule+0x12/0x2b
>  [47060.670185]  [<cc815532>] __lbs_cmd+0xe7/0x17c [libertas]
>  [47060.670185]  [<c0427f45>] ? autoremove_wake_function+0x0/0x2f
>  [47060.670185]  [<cc813366>] lbs_get_wireless_stats+0x1c9/0x2f3 [libertas]
>  [47060.670185]  [<cc814d7f>] ? lbs_cmd_copyback+0x0/0x48 [libertas]
>  [47060.670185]  [<c065b9fc>] wireless_seq_show+0x45/0xdd
>  [47060.670185]  [<c048455c>] seq_read+0x2a3/0x372
>  [47060.670185]  [<c04a2fcf>] proc_reg_read+0x6a/0x84
>  [47060.670185]  [<c04842b9>] ? seq_read+0x0/0x372
>  [47060.670185]  [<c04a2fcf>] ? proc_reg_read+0x6a/0x84
>  [47060.670185]  [<c047066b>] vfs_read+0x88/0x106
>  [47060.670185]  [<c04a2f65>] ? proc_reg_read+0x0/0x84
>  [47060.670185]  [<c04707a2>] sys_read+0x4a/0x7a
>  [47060.670185]  [<c0403434>] sysenter_do_call+0x12/0x26
>  [47060.670185]  [<c0403434>] ? sysenter_do_call+0x12/0x26
>  [47060.672482] BUG: scheduling while atomic: iwconfig/1994/0x00000002
>  [47060.672502] Modules linked in: rfcomm bnep l2cap uinput usb8xxx libertas btusb bluetooth usbhid mousedev lib80211 psmouse ehci_hcd serio_raw ohci_hcd cs5535_gpio usbcore [last unloaded: rfcomm]
>  [47060.672648] Pid: 1994, comm: iwconfig Tainted: G        W  2.6.30pgf #10
>  [47060.672669] Call Trace:
>  [47060.672702]  [<c041241c>] __schedule_bug+0x47/0x4c
>  [47060.672737]  [<c06629d5>] __schedule+0x6e/0x47e
>  [47060.672768]  [<c0411313>] ? __wake_up+0x32/0x3b
>  [47060.672806]  [<c0662df7>] schedule+0x12/0x2b
>  [47060.672838]  [<c0662df7>] ? schedule+0x12/0x2b
>  [47060.672935]  [<cc815532>] __lbs_cmd+0xe7/0x17c [libertas]
>  [47060.672974]  [<c0427f45>] ? autoremove_wake_function+0x0/0x2f
>  [47060.673071]  [<cc813366>] lbs_get_wireless_stats+0x1c9/0x2f3 [libertas]
>  [47060.673166]  [<cc814d7f>] ? lbs_cmd_copyback+0x0/0x48 [libertas]
>  [47060.673211]  [<c065b9fc>] wireless_seq_show+0x45/0xdd
>  [47060.673244]  [<c048455c>] seq_read+0x2a3/0x372
>  [47060.673283]  [<c04a2fcf>] proc_reg_read+0x6a/0x84
>  [47060.673312]  [<c04842b9>] ? seq_read+0x0/0x372
>  [47060.673344]  [<c04a2fcf>] ? proc_reg_read+0x6a/0x84
>  [47060.673378]  [<c047066b>] vfs_read+0x88/0x106
>  [47060.673410]  [<c04a2f65>] ? proc_reg_read+0x0/0x84
>  [47060.673441]  [<c04707a2>] sys_read+0x4a/0x7a
>  [47060.673477]  [<c0403434>] sysenter_do_call+0x12/0x26
>  [47060.673508]  [<c0403434>] ? sysenter_do_call+0x12/0x26
> 
> 
> =---------------------
>  paul fox, pgf at laptop.org
> 
> _______________________________________________
> libertas-dev mailing list
> libertas-dev at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/libertas-dev




More information about the libertas-dev mailing list