mirror of
https://github.com/torvalds/linux.git
synced 2024-12-04 18:13:04 +00:00
6a0c054930
There are sleep in atomic context bugs when dm_fsync_timer_callback is
executing. The root cause is that the memory allocation functions with
GFP_KERNEL or GFP_NOIO parameters are called in dm_fsync_timer_callback
which is a timer handler. The call paths that could trigger bugs are
shown below:
(interrupt context)
dm_fsync_timer_callback
write_nic_byte
kzalloc(sizeof(data), GFP_KERNEL); //may sleep
usb_control_msg
kmalloc(.., GFP_NOIO); //may sleep
write_nic_dword
kzalloc(sizeof(data), GFP_KERNEL); //may sleep
usb_control_msg
kmalloc(.., GFP_NOIO); //may sleep
This patch uses delayed work to replace timer and moves the operations
that may sleep into the delayed work in order to mitigate bugs.
Fixes:
|
||
---|---|---|
.. | ||
ieee80211 | ||
authors | ||
changes | ||
Kconfig | ||
Makefile | ||
r819xU_cmdpkt.c | ||
r819xU_cmdpkt.h | ||
r819xU_firmware_img.c | ||
r819xU_firmware_img.h | ||
r819xU_firmware.c | ||
r819xU_firmware.h | ||
r819xU_phy.c | ||
r819xU_phy.h | ||
r819xU_phyreg.h | ||
r8180_93cx6.c | ||
r8180_93cx6.h | ||
r8190_rtl8256.c | ||
r8190_rtl8256.h | ||
r8192U_core.c | ||
r8192U_dm.c | ||
r8192U_dm.h | ||
r8192U_hw.h | ||
r8192U_wx.c | ||
r8192U_wx.h | ||
r8192U.h |