mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2026-03-09 03:49:28 -04:00
The workqueue items don't need to be processed directly when they are scheduled. It can happen that they are simply processed at a much later time. It is therefore necessary to ensure that all workqueue items of a driver are no longer being processed before the driver (or structures of this driver) are destroyed. When skipping this step, the driver driver can cause a kernel Oops on reboot. Unfortunately, it is not recommended [1] to flush items out of the system workqueue - simply because this can cause deadlocks. The driver itself must have a private workqueue which is then flushed. [1] https://lkml.kernel.org/r/49925af7-78a8-a3dd-bce6-cfc02e1a9236@I-love.SAKURA.ne.jp Signed-off-by: Issam Hamdi <ih@simonwunderlich.de> Signed-off-by: Harshal Gohel <hg@simonwunderlich.de> Signed-off-by: Sharadanand Karanjkar <sk@simonwunderlich.de> Link: https://github.com/openwrt/openwrt/pull/19570 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>