rtl8188eu: Fix a possible sleep-in-atomic bug in set_tx_beacon_cmd
The driver may sleep under a spinlock. The function call path is: update_beacon (acquire the spinlock) update_BCNTIM set_tx_beacon_cmd kzalloc(GFP_KERNEL) --> may sleep kmemdup(GFP_KERNEL) --> may sleep To fix it, GFP_KERNEL is replaced with GFP_ATOMIC. This bug is found by my static analysis tool(DSAC) and checked by my code review. Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d6a5eee8e0
commit
705f385849
|
@ -5395,14 +5395,14 @@ u8 set_tx_beacon_cmd(struct adapter *padapter)
|
|||
int len_diff = 0;
|
||||
|
||||
|
||||
ph2c = kzalloc(sizeof(struct cmd_obj), GFP_KERNEL);
|
||||
ph2c = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC);
|
||||
if (!ph2c) {
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
ptxBeacon_parm = kmemdup(&(pmlmeinfo->network),
|
||||
sizeof(struct wlan_bssid_ex), GFP_KERNEL);
|
||||
sizeof(struct wlan_bssid_ex), GFP_ATOMIC);
|
||||
if (ptxBeacon_parm == NULL) {
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
|
|
Loading…
Reference in New Issue