diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 97d276ff1edb..388ea9e7ab8a 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4548,6 +4548,7 @@ SYSCALL_DEFINE0(sched_yield) int __sched _cond_resched(void) { if (should_resched(0)) { + sched_submit_work(current); preempt_schedule_common(); return 1; } @@ -4572,9 +4573,10 @@ int __cond_resched_lock(spinlock_t *lock) if (spin_needbreak(lock) || resched) { spin_unlock(lock); - if (resched) + if (resched) { + sched_submit_work(current); preempt_schedule_common(); - else + } else cpu_relax(); ret = 1; spin_lock(lock);