On Dec 18, 2007 9:58 PM, Zhu Yi <[EMAIL PROTECTED]> wrote: > > On Tue, 2007-12-18 at 15:57 +0100, Johannes Berg wrote: > > Thanks. This is a bug in iwlwifi. > > > > The problem is actually another case where my workqueue debugging with > > lockdep is triggering a warning :)) > > > > Here's the thing: > > > > iwl3945_cancel_deferred_work does > > > > cancel_delayed_work_sync(&priv->init_alive_start); > > > > (which is the "(&(&priv->init_alive_start)->work)" lock) > > > > but it is called from within a locked section of > > mutex_lock(&priv->mutex); (locked from iwl3945_pci_suspend) > > > > On the other hand, the task that runs from the init_alive_start > > workqueue is iwl3945_bg_init_alive_start() which will lock the same > > mutex. > > > > So the deadlock condition is that you can be in > > cancel_delayed_work_sync() above while the mutex is locked, and be > > waiting for iwl_3945_bg_init_alive_start() which tries to lock the > > mutex. > > Thanks for the analysis. > > Miles, please try the attached patch. I'll send a patch for both 3945 > and 4965 to linux-wireless later.
I tested it and it looks good here. Thanks! Miles -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html