Lockdep splat when unloading b43

Larry Finger Larry.Finger at lwfinger.net
Sun Feb 24 14:38:42 EST 2013


On 02/24/2013 12:14 PM, Johannes Berg wrote:
> On Sun, 2013-02-24 at 11:31 -0600, Larry Finger wrote:

Thanks for the detailed analysis. It was very helpful.

> Here request_firmware calls wiphy_register which locks the RTNL, and
> it's running from the work struct. This was newly introduced by commit
> ecb4433550f0620f3d1471ae7099037ede30a91e
> Author: Stanislaw Gruszka <sgruszka at redhat.com>
> Date:   Fri Aug 12 14:00:59 2011 +0200
>
>      mac80211: fix suspend/resume races with unregister hw

That commit may bear some responsibility, but commit 
6b6fa5868eec26bdc6a83543cebb8cf832a2645a
Author: Larry Finger <Larry.Finger at lwfinger.net>
Date:   Thu Mar 8 22:27:46 2012 -0600

     b43: Load firmware from a work queue and not from the probe routine

is also at fault.

> Anyway, the solution probably is to move the cancel_work_sync into
> something like the ssb deregister.

This fix was also suggested by Michael - it works.

The change to load the firmware from a work queue failed when b43 was built into 
the kernel, which required commit 5e20a4b53094651d80f856ff55a916b999dbb57a
Author: Larry Finger <Larry.Finger at lwfinger.net>
Date:   Thu Dec 20 15:55:01 2012 -0600

     b43: Fix firmware loading when driver is built into the kernel

I probably should do a rewrite of firmware loading, but that is unlikely to 
happen. Fortunately, moving the cancel work call is a small enough change that 
it can be backported to stable.

Thanks,

Larry




More information about the b43-dev mailing list