MLK-11065-6 bcmdhd: fix warning when rmmod module
authorDong Aisheng <b29396@freescale.com>
Fri, 3 Apr 2015 09:15:13 +0000 (17:15 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 19:49:01 +0000 (14:49 -0500)
root@imx7d_all:~# rmmod bcmdhd
dhd_prot_ioctl : bus is down. we have nothing to do
dhd_wlfc_deinit():3268, ampdu_hostreorder get failed Err = -1
dhd_prot_ioctl : bus is down. we have nothing to do
dhd_wlfc_deinit():3291 failed to enable/disable bdcv2 tlv signaling Err = -1
dhd_detach(): thread:dhd_watchdog_thread:2d4 terminated OK
dhd_dpc_thread: Unexpected up_cnt 0
dhd_detach(): thread:dhd_dpc:2d5 terminated OK
CFG80211-ERROR) wl_event_handler : was terminated
wl_destroy_event_handler(): thread:wl_event_handler:2d3 terminated OK
------------[ cut here ]------------
Kernel BUG at 800d12b0 [verbose debug info unavailable]
Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
Modules linked in: bcmdhd(-) evbug
CPU: 0 PID: 755 Comm: rmmod Not tainted 3.14.28-7D_alpha #1
task: a8a31680 ti: a841a000 task.ti: a841a000
PC is at kfree+0x17c/0x180
LR is at wiphy_unregister+0x15c/0x1cc
pc : [<800d12b0>]    lr : [<806b0cf8>]    psr: 40070013
sp : a841be28  ip : 00000000  fp : a901396c
r10: 7f078dc0  r9 : a9240120  r8 : a9240380
r7 : a9240000  r6 : a9010000  r5 : ab73af20  r4 : a9240120
r3 : 00000000  r2 : ab75a000  r1 : 00000000  r0 : 7f079220
Flags: nZcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 10c53c7d  Table: a863406a  DAC: 00000015
Process rmmod (pid: 755, stack limit = 0xa841a238)
Stack: (0xa841be28 to 0xa841c000)
be20:                   7f079220 a9240120 00000000 a9010000 a9240000 a9240380
be40: a9240120 7f078dc0 a901396c 806b0cf8 00000000 7f078dc0 a901396c 805962b4
be60: 7f07cea0 a8433800 a8ae3840 a9240380 a9010000 a9013000 a9240380 7f02b088
be80: 00000000 00000000 a9010000 a9013000 a9010000 7f07cea0 7f078dc0 7f00f00c
bea0: 00000001 a850f800 7f078dc0 a865b3c0 00000081 8000e5e4 a841a000 00000000
bec0: 00000000 7f05588c 7f078dc0 a850f800 00000000 7f056080 7f056044 a865b180
bee0: a865b340 7f048944 a8fe7800 a865b3c0 7f07acd4 7f04a37c 7f04a330 a8487408
bf00: a8487400 804baf10 a8487408 7f07acd4 a848743c 803476b4 7f07acd4 a8487408
bf20: 7f07acd4 80347dc4 7f07acd4 7f07ad38 00000800 803473b4 00000000 7f05f158
bf40: 7f05f12c 80083be8 00000000 00000000 7f07ad38 00000800 a841bf4c 646d6362
bf60: 00006468 00000000 8108f030 a8a31680 a8a31a30 00000000 00000000 8004605c
bf80: a89c4d80 a841a018 8000e5e4 a841bfb0 a841a000 00011330 00000000 7ecc5e1c
bfa0: 00000002 8000e460 00000000 7ecc5e1c 01b05d3c 00000800 76f26104 00002002
bfc0: 00000000 7ecc5e1c 00000002 00000081 7ecc5f0a 00000001 01b05d08 00000000
bfe0: 76eebeb0 7ecc5bfc 00016e3c 76eebebc 60080010 01b05d3c efdff749 faff7bf3
[<800d12b0>] (kfree) from [<806b0cf8>] (wiphy_unregister+0x15c/0x1cc)
[<806b0cf8>] (wiphy_unregister) from [<7f02b088>] (wl_free_wdev+0x2c/0xf8 [bcmdhd])
[<7f02b088>] (wl_free_wdev [bcmdhd]) from [<7f00f00c>] (dhd_detach+0x274/0x430 [bcmdhd])
[<7f00f00c>] (dhd_detach [bcmdhd]) from [<7f05588c>] (dhdsdio_release+0x40/0x1cc [bcmdhd])
[<7f05588c>] (dhdsdio_release [bcmdhd]) from [<7f056080>] (dhdsdio_disconnect+0x3c/0xa0 [bcmdhd])
[<7f056080>] (dhdsdio_disconnect [bcmdhd]) from [<7f048944>] (bcmsdh_remove+0x3c/0x60 [bcmdhd])
[<7f048944>] (bcmsdh_remove [bcmdhd]) from [<7f04a37c>] (bcmsdh_sdmmc_remove+0x4c/0x64 [bcmdhd])
[<7f04a37c>] (bcmsdh_sdmmc_remove [bcmdhd]) from [<804baf10>] (sdio_bus_remove+0x30/0xf8)
[<804baf10>] (sdio_bus_remove) from [<803476b4>] (__device_release_driver+0x70/0xcc)
[<803476b4>] (__device_release_driver) from [<80347dc4>] (driver_detach+0xac/0xb0)
[<80347dc4>] (driver_detach) from [<803473b4>] (bus_remove_driver+0x4c/0xa0)
[<803473b4>] (bus_remove_driver) from [<7f05f158>] (dhd_module_cleanup+0x2c/0x3c [bcmdhd])
[<7f05f158>] (dhd_module_cleanup [bcmdhd]) from [<80083be8>] (SyS_delete_module+0x11c/0x17c)
[<80083be8>] (SyS_delete_module) from [<8000e460>] (ret_fast_syscall+0x0/0x30)
Code: e1a01005 e1a02006 e8bd4ff8 eafffef1 (e7f001f2)
---[ end trace ca749705cd612037 ]---
Segmentation fault

Signed-off-by: Dong Aisheng <b29396@freescale.com>
(cherry picked from commit 8d019afe680fd7f20e42159daf2da7d9bfc94577)

drivers/net/wireless/bcmdhd/wl_cfg80211.c

index 3fec4c8..700ea52 100644 (file)
@@ -7384,6 +7384,9 @@ static void wl_free_wdev(struct bcm_cfg80211 *cfg)
        }
        wiphy = wdev->wiphy;
 
+       wdev->wiphy->wowlan = NULL;
+       wdev->wiphy->wowlan_config = NULL;
+
 #if (LINUX_VERSION_CODE > KERNEL_VERSION(3, 13, 0)) || defined(WL_VENDOR_EXT_SUPPORT)
        wl_cfgvendor_detach(wdev->wiphy);
 #endif /* if (LINUX_VERSION_CODE > KERNEL_VERSION(3, 13, 0)) || defined(WL_VENDOR_EXT_SUPPORT) */