summaryrefslogtreecommitdiff
path: root/kernel/locking/mutex.c
diff options
context:
space:
mode:
authorK Prateek Nayak <kprateek.nayak@amd.com>2026-05-26 11:43:02 +0200
committerPeter Zijlstra <peterz@infradead.org>2026-06-02 12:26:09 +0200
commitec9d4f1c424134bbf30965075df78d02a5d021dc (patch)
tree9152ef21a1e4667a289c758f847e130636397eb9 /kernel/locking/mutex.c
parentbe365ce2bc20b8970bed350f82c3b760256b6945 (diff)
sched/proxy: Remove PROXY_WAKING
Now that the proxy path uses ->is_blocked, use the '->is_blocked && !->blocked_on' state instead of PROXY_WAKING. Notably, this is where a blocked_on relation is broken but the donor task might still need a return migration. Signed-off-by: K Prateek Nayak <kprateek.nayak@amd.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://patch.msgid.link/20260526113322.596522894%40infradead.org
Diffstat (limited to 'kernel/locking/mutex.c')
-rw-r--r--kernel/locking/mutex.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c
index 28677165785f..89d01f788973 100644
--- a/kernel/locking/mutex.c
+++ b/kernel/locking/mutex.c
@@ -1044,7 +1044,7 @@ static noinline void __sched __mutex_unlock_slowpath(struct mutex *lock, unsigne
next_lock = __get_task_blocked_on(donor);
if (next_lock == lock) {
next = get_task_struct(donor);
- __set_task_blocked_on_waking(donor, next_lock);
+ __clear_task_blocked_on(next, lock);
current->blocked_donor = NULL;
}
raw_spin_unlock(&donor->blocked_lock);
@@ -1060,7 +1060,7 @@ static noinline void __sched __mutex_unlock_slowpath(struct mutex *lock, unsigne
raw_spin_lock_nested(&next->blocked_lock, SINGLE_DEPTH_NESTING);
debug_mutex_wake_waiter(lock, waiter);
- __set_task_blocked_on_waking(next, lock);
+ __clear_task_blocked_on(next, lock);
raw_spin_unlock(&next->blocked_lock);
}