OpenCloudOS-Kernel/drivers/staging/rtl8712
Pavel Skripkin e9e6aa51b2 staging: rtl8712: error handling refactoring
There was strange error handling logic in case of fw load failure. For
some reason fw loader callback was doing clean up stuff when fw is not
available. I don't see any reason behind doing this. Since this driver
doesn't have EEPROM firmware let's just disconnect it in case of fw load
failure. Doing clean up stuff in 2 different place which can run
concurently is not good idea and syzbot found 2 bugs related to this
strange approach.

So, in this pacth I deleted all clean up code from fw callback and made
a call to device_release_driver() under device_lock(parent) in case of fw
load failure. This approach is more generic and it defend driver from UAF
bugs, since all clean up code is moved to one place.

Fixes: e02a3b9458 ("staging: rtl8712: fix memory leak in rtl871x_load_fw_cb")
Fixes: 8c213fa591 ("staging: r8712u: Use asynchronous firmware loading")
Cc: stable <stable@vger.kernel.org>
Reported-and-tested-by: syzbot+5872a520e0ce0a7c7230@syzkaller.appspotmail.com
Reported-and-tested-by: syzbot+cc699626e48a6ebaf295@syzkaller.appspotmail.com
Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
Link: https://lore.kernel.org/r/d49ecc56e97c4df181d7bd4d240b031f315eacc3.1626895918.git.paskripkin@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-07-27 15:15:24 +02:00
..
Kconfig staging: rtl8712: switch to common ieee80211 headers 2020-06-16 21:26:18 +02:00
Makefile
TODO
basic_types.h staging: rtl8712: base_types: Remove unused macros 2020-07-03 10:32:13 +02:00
drv_types.h drivers: staging: rtl8712: _adapter is declared twice 2021-03-26 14:59:33 +01:00
ethernet.h
hal_init.c staging: rtl8712: error handling refactoring 2021-07-27 15:15:24 +02:00
ieee80211.c staging: rtl8712: Use constants from <linux/ieee80211.h> 2021-04-07 10:19:12 +02:00
ieee80211.h staging: rtl8712: switch to common ieee80211 headers 2020-06-16 21:26:18 +02:00
mlme_linux.c staging: rtl8712: r8712_wdg_timeout_handler: Remove function 2019-06-21 16:46:18 +02:00
mlme_osdep.h drivers: staging: rtl8712: align arguments with open parenthesis 2021-04-06 14:15:56 +02:00
mp_custom_oid.h
os_intfs.c staging: rtl8712: fix error handling in r871xu_drv_init 2021-06-14 16:48:09 +02:00
osdep_intf.h staging: rtl8712: Simplify expressions with boolean logic 2020-07-10 13:53:59 +02:00
osdep_service.h
recv_linux.c staging: rtl8712: r8712_os_recvbuf_resource_free(): Change return type 2019-08-02 14:00:56 +02:00
recv_osdep.h staging: rtl8712: r8712_recv_entry(): Change return type 2019-08-08 19:58:14 +02:00
rtl871x_cmd.c staging: rtl8712: Fix possible buffer overflow in r8712_sitesurvey_cmd 2021-03-10 09:23:28 +01:00
rtl871x_cmd.h staging: rtl8712: add blank lines after declarations 2021-04-05 12:12:26 +02:00
rtl871x_debug.h staging: rtl8712: Remove unnecessary alias of printk() 2021-06-09 12:11:21 +02:00
rtl871x_eeprom.c staging: rtl8712: Fixed CamelCase for EepromAddressSize 2019-06-10 17:57:21 +02:00
rtl871x_eeprom.h
rtl871x_event.h staging: rtl8712: add blank lines after declarations 2021-04-05 12:12:26 +02:00
rtl871x_ht.h staging: rtl8712: remove struct rtl_ieee80211_ht_cap and ieee80211_ht_addt_info 2021-04-09 16:14:33 +02:00
rtl871x_io.c staging: rtl8712: clean up comparsions to NULL 2020-09-22 09:49:59 +02:00
rtl871x_io.h staging: rtl8712: Remove extra blank lines 2021-04-06 14:16:20 +02:00
rtl871x_ioctl.h
rtl871x_ioctl_linux.c staging: rtl8712: remove struct rtl_ieee80211_ht_cap and ieee80211_ht_addt_info 2021-04-09 16:14:33 +02:00
rtl871x_ioctl_rtl.c staging: rtl8712: Change return values of r8712_getrfreg_cmd() 2019-07-01 10:44:05 +02:00
rtl871x_ioctl_rtl.h
rtl871x_ioctl_set.c staging: rtl8712: r8712_set_802_11_add_wep(): Change return values 2019-07-25 09:52:00 +02:00
rtl871x_ioctl_set.h staging: rtl8712: r8712_set_802_11_add_wep(): Change return values 2019-07-25 09:52:00 +02:00
rtl871x_led.h staging: rtl8712: get rid of flush_scheduled_work 2021-07-27 15:15:24 +02:00
rtl871x_mlme.c staging: rtl8712: Use list iterators and helpers 2021-05-10 11:19:33 +02:00
rtl871x_mlme.h staging: rtl8712: Remove extra blank lines 2021-04-06 14:16:20 +02:00
rtl871x_mp.c staging: rtl8712: add blank lines after declarations 2021-04-05 12:12:26 +02:00
rtl871x_mp.h staging: rtl8712: add blank lines after declarations 2021-04-05 12:12:26 +02:00
rtl871x_mp_ioctl.c staging: rtl8712: fix the bssid in mp_start_test() 2021-05-19 16:02:51 +02:00
rtl871x_mp_ioctl.h staging: rtl8712: rtl871x_mp_ioctl: Remove a bunch of unused tables 2021-05-10 11:19:23 +02:00
rtl871x_mp_phy_regdef.h staging: rtl8712: Correct a typo in a comment 2020-03-19 15:09:10 +01:00
rtl871x_pwrctrl.c staging: rtl8712: get rid of flush_scheduled_work 2021-07-27 15:15:24 +02:00
rtl871x_pwrctrl.h staging: rtl8712: get rid of flush_scheduled_work 2021-07-27 15:15:24 +02:00
rtl871x_recv.c staging: rtl8712: Fix some tests against some 'data' subtype frames 2021-05-10 11:19:34 +02:00
rtl871x_recv.h staging: rtl8712: Remove extra blank lines 2021-04-06 14:16:20 +02:00
rtl871x_rf.h staging: rtl8712: Improve naming of include hearder guards 2019-08-21 05:48:06 -07:00
rtl871x_security.c staging: rtl8712: Fix some tests against some 'data' subtype frames 2021-05-10 11:19:34 +02:00
rtl871x_security.h staging: rtl8712: add spaces around operators 2021-04-06 14:15:39 +02:00
rtl871x_sta_mgt.c staging: rtl8712: Removed unnecessary blank lines 2021-05-25 18:23:26 +02:00
rtl871x_wlan_sme.h
rtl871x_xmit.c staging: rtl8712: Removed unnecessary blank lines 2021-05-25 18:23:26 +02:00
rtl871x_xmit.h staging: rtl8712: match parentheses alignment 2021-04-06 14:15:40 +02:00
rtl8712_bitdef.h
rtl8712_cmd.c staging: rtl8712: Replace printk() with netdev_dbg() 2021-06-12 15:37:57 +02:00
rtl8712_cmd.h Merge 5.1-rc3 into staging-next 2019-04-01 07:49:24 +02:00
rtl8712_cmdctrl_bitdef.h
rtl8712_cmdctrl_regdef.h
rtl8712_debugctrl_bitdef.h
rtl8712_debugctrl_regdef.h
rtl8712_edcasetting_bitdef.h
rtl8712_edcasetting_regdef.h
rtl8712_efuse.c staging: rtl8712: rtl8712_efuse.c: Remove leading p from variable names 2019-06-20 14:47:28 +02:00
rtl8712_efuse.h staging: rtl8712: rtl8712_efuse.h: alignment should match open parenthesis 2019-03-21 20:08:08 +01:00
rtl8712_event.h
rtl8712_fifoctrl_bitdef.h
rtl8712_fifoctrl_regdef.h
rtl8712_gp_bitdef.h
rtl8712_gp_regdef.h
rtl8712_hal.h
rtl8712_interrupt_bitdef.h
rtl8712_io.c staging: rtl8712: rename bSurpriseRemoved to surprise_removed 2019-03-18 07:05:18 +01:00
rtl8712_led.c staging: rtl8712: get rid of flush_scheduled_work 2021-07-27 15:15:24 +02:00
rtl8712_macsetting_bitdef.h
rtl8712_macsetting_regdef.h
rtl8712_powersave_bitdef.h
rtl8712_powersave_regdef.h
rtl8712_ratectrl_bitdef.h
rtl8712_ratectrl_regdef.h
rtl8712_recv.c staging: rtl8712: remove multiple multiple assignments 2021-05-10 11:19:34 +02:00
rtl8712_recv.h staging: rtl8712: remove extra blank lines 2021-04-05 12:12:26 +02:00
rtl8712_regdef.h
rtl8712_security_bitdef.h
rtl8712_spec.h
rtl8712_syscfg_bitdef.h
rtl8712_syscfg_regdef.h
rtl8712_timectrl_bitdef.h
rtl8712_timectrl_regdef.h
rtl8712_wmac_bitdef.h
rtl8712_wmac_regdef.h staging: rtl8712: removed extra blank line 2021-04-08 09:27:59 +02:00
rtl8712_xmit.c Staging: rtl8712: Cleanup coding style warning 2021-06-03 15:57:37 +02:00
rtl8712_xmit.h staging: rtl8712: fixed whitespace coding style issue 2021-03-12 17:31:01 +01:00
sta_info.h staging: rtl8712: Remove extra blank lines 2021-04-06 14:16:20 +02:00
usb_halinit.c staging: rtl8712: correct spelling mistake in comment 2020-04-16 12:33:03 +02:00
usb_intf.c staging: rtl8712: error handling refactoring 2021-07-27 15:15:24 +02:00
usb_ops.c staging: rtl8712: usb_ops.c: Remove leading p from variable names 2019-06-09 13:03:52 +02:00
usb_ops.h staging: rtl8712: matched alignment with open parenthesis 2021-04-08 09:27:58 +02:00
usb_ops_linux.c staging: rtl8712: convert tasklets to use new tasklet_setup() API 2020-09-16 13:13:00 +02:00
usb_osintf.h staging: rtl8712: r8712_free_drv_sw(): Change return type 2019-08-08 19:58:15 +02:00
wifi.h staging: rtl8712: remove (most of) enum WIFI_FRAME_TYPE 2021-04-09 16:14:33 +02:00
wlan_bssdef.h staging: rtl8712: add spaces around '+' 2021-04-09 16:11:23 +02:00
xmit_linux.c staging: rtl8712: Removed unnecessary blank lines 2021-05-25 18:23:26 +02:00
xmit_osdep.h staging: rtl8712: match parentheses alignment 2021-04-06 14:15:40 +02:00