소스 검색

Add flush_workqueue before destroying workqueue

To ensure no work is left running when the module is removed, call
flush_workqueue() before destroy_workqueue() in the module exit path.
According to the kernel documentation, destroy_workqueue() expects
that all work items have already completed:

    "Safely destroy a workqueue. All work currently pending will be
    done first."

This change adds an explicit call to flush_workqueue() in the module
exit function to ensure no work handler remains in progress or pending
at the time of destruction.
Guan-Chun.Wu 4 일 전
부모
커밋
b30af6bf36
1개의 변경된 파일1개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      examples/sched.c

+ 1 - 0
examples/sched.c

@@ -27,6 +27,7 @@ static int __init sched_init(void)
 
 static void __exit sched_exit(void)
 {
+    flush_workqueue(queue);
     destroy_workqueue(queue);
 }