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)
|
static void __exit pcied_cleanup(void)
|
||||||
{
|
{
|
||||||
dbg("unload_pciehpd()\n");
|
dbg("unload_pciehpd()\n");
|
||||||
|
pcie_port_service_unregister(&hpdriver_portdrv);
|
||||||
destroy_workqueue(pciehp_ordered_wq);
|
destroy_workqueue(pciehp_ordered_wq);
|
||||||
destroy_workqueue(pciehp_wq);
|
destroy_workqueue(pciehp_wq);
|
||||||
pcie_port_service_unregister(&hpdriver_portdrv);
|
|
||||||
info(DRIVER_DESC " version: " DRIVER_VERSION " unloaded\n");
|
info(DRIVER_DESC " version: " DRIVER_VERSION " unloaded\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче