mwifiex: fix NULL pointer dereference in usb suspend handler
authorBing Zhao <[email protected]>
Wed, 25 Sep 2013 02:31:25 +0000 (19:31 -0700)
committerJohn W. Linville <[email protected]>
Thu, 26 Sep 2013 18:02:33 +0000 (14:02 -0400)
commit346ece0b7ba2730b4d633b9e371fe55488803102
tree4acd0edca9eebd12abcb6c4a7a5726acfc386c15
parentbd1c6142edce787b8ac1be15635f845aa9905333
mwifiex: fix NULL pointer dereference in usb suspend handler

Bug 60815 - Interface hangs in mwifiex_usb
https://bugzilla.kernel.org/show_bug.cgi?id=60815

[ 2.883807] BUG: unable to handle kernel NULL pointer dereference
            at 0000000000000048
[ 2.883813] IP: [<ffffffff815a65e0>] pfifo_fast_enqueue+0x90/0x90

[ 2.883834] CPU: 1 PID: 3220 Comm: kworker/u8:90 Not tainted
            3.11.1-monotone-l0 #6
[ 2.883834] Hardware name: Microsoft Corporation Surface with
            Windows 8 Pro/Surface with Windows 8 Pro,
            BIOS 1.03.0450 03/29/2013

On Surface Pro, suspend to ram gives a NULL pointer dereference in
pfifo_fast_enqueue(). The stack trace reveals that the offending
call is clearing carrier in mwifiex_usb suspend handler.

Since commit 1499d9f "mwifiex: don't drop carrier flag over suspend"
has removed the carrier flag handling over suspend/resume in SDIO
and PCIe drivers, I'm removing it in USB driver too. This also fixes
the bug for Surface Pro.

Cc: <[email protected]> # 3.5+
Tested-by: Dmitry Khromov <[email protected]>
Signed-off-by: Bing Zhao <[email protected]>
Signed-off-by: John W. Linville <[email protected]>
drivers/net/wireless/mwifiex/usb.c