diff --git a/kernel_module/delay.c b/kernel_module/delay.c index a1fa5270..b86d0c1f 100644 --- a/kernel_module/delay.c +++ b/kernel_module/delay.c @@ -43,9 +43,6 @@ void cleanup_module(void) { /* This waits for the work to finish. From docstring: */ /* > Cancel @work and wait for its execution to finish. */ - cancel_work(&work); - - /*cancel_work(&work);*/ - + cancel_work_sync(&work); destroy_workqueue(queue); } diff --git a/kernel_module/workqueue_cheat.c b/kernel_module/workqueue_cheat.c index 36e20748..614249ec 100644 --- a/kernel_module/workqueue_cheat.c +++ b/kernel_module/workqueue_cheat.c @@ -39,9 +39,6 @@ int init_module(void) void cleanup_module(void) { - /* TODO why is this needed? Why flush_workqueue doesn't work? (re-insmod panics) - * http://stackoverflow.com/questions/37216038/whats-the-difference-between-flush-delayed-work-and-cancel-delayed-work-sync */ - /*flush_workqueue(queue);*/ - cancel_work_sync(&work); + /* Waits for jobs to finish. */ destroy_workqueue(queue); }