rtl8188eu: Fix a possible sleep-in-atomic bug in set_tx_beacon_cmd
authorJia-Ju Bai <baijiaju1990@gmail.com>
Tue, 12 Dec 2017 13:08:06 +0000 (21:08 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Dec 2017 11:48:46 +0000 (12:48 +0100)
commit705f385849b209605dadf0450effd96947fdb6c6
tree882ab89ea7d758c45413b0072d1eb5e725cea13b
parentd6a5eee8e050d85a65afb22f5259e3619f0b8cb0
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>
drivers/staging/rtl8188eu/core/rtw_mlme_ext.c