net/wireless/libertas: do not call wiphy_unregister() w/o wiphy_register()
The libertas driver calls wiphy_unregister() without a prior
wiphy_register() when a devices fails initialization. Fix this by
introducing a private flag.
[ 9.310000] Unable to handle kernel NULL pointer dereference at virtual address
00000000
[...]
[ 9.330000] [<
c0311310>] (wiphy_unregister+0xfc/0x19c) from [<
bf00c9ec>] (lbs_cfg_free+0x70/0x9c [libertas])
[ 9.330000] [<
bf00c9ec>] (lbs_cfg_free+0x70/0x9c [libertas]) from [<
bf014fdc>] (lbs_remove_card+0x180/0x210 [libertas])
[ 9.330000] [<
bf014fdc>] (lbs_remove_card+0x180/0x210 [libertas]) from [<
bf035394>] (if_sdio_probe+0xdc4/0xef4 [libertas_sdio])
[ 9.330000] [<
bf035394>] (if_sdio_probe+0xdc4/0xef4 [libertas_sdio]) from [<
c0230d14>] (sdio_bus_probe+0xd4/0xf0)
[ 9.330000] [<
c0230d14>] (sdio_bus_probe+0xd4/0xf0) from [<
c01a6034>] (driver_probe_device+0xa4/0x174)
[ 9.330000] [<
c01a6034>] (driver_probe_device+0xa4/0x174) from [<
c01a6164>] (__driver_attach+0x60/0x84)
[ 9.330000] [<
c01a6164>] (__driver_attach+0x60/0x84) from [<
c01a5854>] (bus_for_each_dev+0x4c/0x8c)
[ 9.330000] [<
c01a5854>] (bus_for_each_dev+0x4c/0x8c) from [<
c01a50e4>] (bus_add_driver+0xa0/0x228)
[ 9.330000] [<
c01a50e4>] (bus_add_driver+0xa0/0x228) from [<
c01a6470>] (driver_register+0xc0/0x150)
[ 9.330000] [<
c01a6470>] (driver_register+0xc0/0x150) from [<
bf03a06c>] (if_sdio_init_module+0x6c/0x108 [libertas_sdio])
[ 9.330000] [<
bf03a06c>] (if_sdio_init_module+0x6c/0x108 [libertas_sdio]) from [<
c00263ac>] (do_one_initcall+0x5c/0x1bc)
[ 9.330000] [<
c00263ac>] (do_one_initcall+0x5c/0x1bc) from [<
c0069f80>] (sys_init_module+0xc0/0x1f0)
[ 9.330000] [<
c0069f80>] (sys_init_module+0xc0/0x1f0) from [<
c0026f00>] (ret_fast_syscall+0x0/0x30)
Signed-off-by: Daniel Mack <daniel@caiaq.de>
Cc: Dan Williams <dcbw@redhat.com>
Cc: John W. Linville <linville@tuxdriver.com>
Cc: Holger Schurig <hs4233@mail.mn-solutions.de>
Cc: Bing Zhao <bzhao@marvell.com>
Cc: libertas-dev@lists.infradead.org
Cc: linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>