ligd
bc17563a8f
wqueue: fix race-condition on work_queue
CPU0 CPU1
work_queue(a) work_queue(a)
-> work_cancel(a)
-> work_cancel(a)
-> enter_critical()
-> sq_addlast(a)
-> leave_critical()
-> enter_critical()
-> sq_addlast(a) // double add, wrong
-> leave_critical()
Also, this happens in mulit-threads in one CPU.
Fix:
work_cancel() should in critical section.
Signed-off-by: ligd <liguiding1@xiaomi.com>
2022-09-09 21:52:21 +02:00
..
2022-08-30 09:42:24 +02:00
2022-08-17 18:33:44 +08:00
2022-08-30 09:42:24 +02:00
2022-08-31 08:50:57 +09:00
2022-09-09 19:00:05 +02:00
2022-04-02 20:09:42 +08:00
2022-09-07 10:50:28 +08:00
2022-08-31 08:50:57 +09:00
2022-09-05 15:36:23 +02:00
2022-08-31 08:50:57 +09:00
2022-08-31 20:34:30 +08:00
2022-09-07 10:50:28 +08:00
2022-08-31 08:50:57 +09:00
2022-08-30 09:42:24 +02:00
2022-08-07 23:33:19 +08:00
2022-05-19 23:21:54 +03:00
2022-09-09 21:52:21 +02:00
2022-08-18 22:11:29 +03:00
2022-06-03 23:56:50 +03:00