mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:46:16 +00:00
fd819ad3ec
When the ax25 device is detaching, the ax25_dev_device_down()
calls ax25_ds_del_timer() to cleanup the slave_timer. When
the timer handler is running, the ax25_ds_del_timer() that
calls del_timer() in it will return directly. As a result,
the use-after-free bugs could happen, one of the scenarios
is shown below:
(Thread 1) | (Thread 2)
| ax25_ds_timeout()
ax25_dev_device_down() |
ax25_ds_del_timer() |
del_timer() |
ax25_dev_put() //FREE |
| ax25_dev-> //USE
In order to mitigate bugs, when the device is detaching, use
timer_shutdown_sync() to stop the timer.
Fixes:
|
||
---|---|---|
.. | ||
af_ax25.c | ||
ax25_addr.c | ||
ax25_dev.c | ||
ax25_ds_in.c | ||
ax25_ds_subr.c | ||
ax25_ds_timer.c | ||
ax25_iface.c | ||
ax25_in.c | ||
ax25_ip.c | ||
ax25_out.c | ||
ax25_route.c | ||
ax25_std_in.c | ||
ax25_std_subr.c | ||
ax25_std_timer.c | ||
ax25_subr.c | ||
ax25_timer.c | ||
ax25_uid.c | ||
Kconfig | ||
Makefile | ||
sysctl_net_ax25.c |