Re: [PATCH v29 5/9] sched: Have try_to_wake_up() handle return-migration for PROXY_WAKING case
From: Peter Zijlstra
Date: Fri May 22 2026 - 07:43:40 EST
On Fri, May 22, 2026 at 01:30:55PM +0200, Peter Zijlstra wrote:
> On Tue, May 12, 2026 at 02:56:15AM +0000, John Stultz wrote:
>
> > migrate_task:
> > proxy_migrate_task(rq, rf, p, owner_cpu);
> > @@ -7107,6 +7101,9 @@ static void __sched notrace __schedule(int sched_mode)
> > if (sched_proxy_exec()) {
> > struct task_struct *prev_donor = rq->donor;
> >
> > + if (!prev_state && prev->blocked_on)
> > + clear_task_blocked_on(prev, NULL);
> > +
> > rq_set_donor(rq, next);
> > if (unlikely(next->blocked_on)) {
> > next = find_proxy_task(rq, next, &rf);
>
> This adds a @prev dereference, after you've just explained how we should
> not use @prev after a lock break.
Ah, n/m. It is only those prev that really were rq->donor. prev itself
is in fact current and will have on_cpu set.