mirror of
https://github.com/torvalds/linux.git
synced 2024-12-16 08:02:17 +00:00
c0955bf957
The function neigh_timer_handler() is a timer handler that runs in an
atomic context. When used by rocker, neigh_timer_handler() calls
"kzalloc(.., GFP_KERNEL)" that may sleep. As a result, the sleep in
atomic context bug will happen. One of the processes is shown below:
ofdpa_fib4_add()
...
neigh_add_timer()
(wait a timer)
neigh_timer_handler()
neigh_release()
neigh_destroy()
rocker_port_neigh_destroy()
rocker_world_port_neigh_destroy()
ofdpa_port_neigh_destroy()
ofdpa_port_ipv4_neigh()
kzalloc(sizeof(.., GFP_KERNEL) //may sleep
This patch changes the gfp_t parameter of kzalloc() from GFP_KERNEL to
GFP_ATOMIC in order to mitigate the bug.
Fixes:
|
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
rocker_hw.h | ||
rocker_main.c | ||
rocker_ofdpa.c | ||
rocker_tlv.c | ||
rocker_tlv.h | ||
rocker.h |