diff options
Diffstat (limited to 'kernel/task_work.c')
| -rw-r--r-- | kernel/task_work.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/task_work.c b/kernel/task_work.c index 5718b3ea202a..0fef395662a6 100644 --- a/kernel/task_work.c +++ b/kernel/task_work.c | |||
| @@ -68,7 +68,7 @@ task_work_cancel(struct task_struct *task, task_work_func_t func) | |||
| 68 | * we raced with task_work_run(), *pprev == NULL/exited. | 68 | * we raced with task_work_run(), *pprev == NULL/exited. |
| 69 | */ | 69 | */ |
| 70 | raw_spin_lock_irqsave(&task->pi_lock, flags); | 70 | raw_spin_lock_irqsave(&task->pi_lock, flags); |
| 71 | while ((work = lockless_dereference(*pprev))) { | 71 | while ((work = READ_ONCE(*pprev))) { |
| 72 | if (work->func != func) | 72 | if (work->func != func) |
| 73 | pprev = &work->next; | 73 | pprev = &work->next; |
| 74 | else if (cmpxchg(pprev, work, work->next) == work) | 74 | else if (cmpxchg(pprev, work, work->next) == work) |
