#8301 BLOC 8.2.0 (: Fast suspend/resume cycle causes a libertas crash

Zarro Boogs per Child bugtracker at laptop.org
Mon Sep 8 09:08:55 EDT 2008


#8301: Fast suspend/resume cycle causes a libertas crash
------------------------+---------------------------------------------------
   Reporter:  cjb       |       Owner:  dsaxena                        
       Type:  defect    |      Status:  new                            
   Priority:  blocker   |   Milestone:  8.2.0 (was Update.2)           
  Component:  kernel    |     Version:  not specified                  
 Resolution:            |    Keywords:  blocks-:8.2.0 cjbfor8.2 relnote
Next_action:  diagnose  |    Verified:  0                              
  Blockedby:            |    Blocking:                                 
------------------------+---------------------------------------------------

Comment(by dcbw):

 lbs_stop_card() should be clearing out any in-flight commands, and the
 driver should also be failing command prep if priv->surpriseremoved == 1,
 which is done in __lbs_cmd_async() for direct commands and
 lbs_prepare_and_send_command() for old-style commands.  So there
 definitely shouldn't be any commands getting through after
 if_usb_disconnect().

 But the command 6 (SCAN) surely is coming from earlier since nothing in
 the disconnect path will call scan, since there isn't any indication of a
 WEXT scan request coming in, and since there isn't any indication of an
 association request (which triggers a scan) coming in either.

 scan.c::lbs_do_scan() calls cmd.c::__lbs_cmd(CMD_802_11_SCAN), which then
 blocks on cmdnode->cmd_waitq.  When lbs_stop_card() cycles through all the
 commands in the queue and stops them,

 Argh.  I forgot about LBS_DEB_HOST, which is what most of the command code
 uses when queuing commands.  I hate to ask, but could you get another log
 with 0x126007 (which adds LBS_DEB_HOST) and also see if you can retrieve
 about 15 - 20 seconds of earlier logging before the stuff that you've
 attached so far?  That should be enough to show us where the actual
 command that's in-flight at the time of disconnect is getting queued, and
 if it's successfully blocking on its cmdnode waitq.  Thanks!

-- 
Ticket URL: <http://dev.laptop.org/ticket/8301#comment:34>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system


More information about the Bugs mailing list