diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 65ed821335dd5..9e7768dbd92d2 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -7068,8 +7068,15 @@ void sched_move_task(struct task_struct *tsk) if (queued) enqueue_task(rq, tsk, queue_flags); - if (running) + if (running) { set_next_task(rq, tsk); + /* + * After changing group, the running task may have joined a + * throttled one but it's still the running task. Trigger a + * resched to make sure that task can still run. + */ + resched_curr(rq); + } task_rq_unlock(rq, tsk, &rf); }