PCI: pciehp: Fix wrong workqueue cleanup
Fix improper workqueue cleanup. In the current pciehp, pcied_cleanup() calls destroy_workqueue() before calling pcie_port_service_unregister(). This causes kernel oops because flush_workqueue() is called in the pcie_port_service_unregister() code path after the workqueue was destroyed. So pcied_cleanup() must call pcie_port_service_unregister() first before calling destroy_workqueue(). Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
This commit is contained in:
Родитель
10f6dc7eed
Коммит
863b7eb583
|
@ -366,9 +366,9 @@ static int __init pcied_init(void)
|
|||
static void __exit pcied_cleanup(void)
|
||||
{
|
||||
dbg("unload_pciehpd()\n");
|
||||
pcie_port_service_unregister(&hpdriver_portdrv);
|
||||
destroy_workqueue(pciehp_ordered_wq);
|
||||
destroy_workqueue(pciehp_wq);
|
||||
pcie_port_service_unregister(&hpdriver_portdrv);
|
||||
info(DRIVER_DESC " version: " DRIVER_VERSION " unloaded\n");
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче