kernel NULL pointer dereference in lbs_set_11d_domain_info (3.0-rc6)

Pavel Roskin proski at gnu.org
Tue Jul 12 11:20:37 EDT 2011


On 07/12/2011 03:22 AM, Sven Neumann wrote:
> On Mon, 2011-07-11 at 17:04 -0400, Pavel Roskin wrote:
>> On 07/11/2011 11:59 AM, Sven Neumann wrote:
>>> Hi,
>>>
>>> we are using a PXA device and I am observing sporadic crashes after
>>> resume from suspend with 3.0-rc6:
>>>
>>>
>>> [ 1296.027645] PM: resume of devices complete after 296.440 msecs
>>> [ 1296.284633] Restarting tasks ...
>>> [ 1296.320276] done.
>>> [ 1296.421618] mmc0: new SDIO card at address 0001
>>> [ 1297.312570] libertas_sdio mmc0:0001:1: (unregistered net_device): 00:19:88:11:db:67, fw 9.70.7p0, cap 0x00000303
>>
>> I think the trouble starts with "unregistered net_device".  It looks
>> like some structures in memory are corrupted.
>
> I don't think that is the problem. The output from booting the kernel
> says "unregistered net_device" as well:
>
> [    9.236512] libertas_sdio: Libertas SDIO driver
> [    9.245261] libertas_sdio: Copyright Pierre Ossman
> [    9.762777] libertas_sdio mmc0:0001:1: (unregistered net_device):
> 00:19:88:11:db:67, fw 9.70.7p0, cap 0x00000303
> [    9.792377] libertas_sdio mmc0:0001:1: wlan0: Marvell WLAN 802.11
> adapter

Oh well.  Then you need to add some tracing to 
lbs_set_11d_domain_info().  I do it the old way.  I put this macro to 
the beginning of the file:

#define MARK printk("%s:%d %s()\n", __FILE__, __LINE__, __func__);

And then I add "MARK" to every second line, as long as it's permitted 
syntactically.  I may skip adding MARK where failures are unlikely, such 
as initialization of local variables.  Once you find the line where 
printing stops, print all variables used on that line.

I would also print the arguments as pointers in the beginning.  Maybe 
they are corrupt.

-- 
Regards,
Pavel Roskin



More information about the libertas-dev mailing list