Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'sched-urgent-2025-07-20' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull scheduler fix from Thomas Gleixner:
"A single fix for the scheduler.

A recent commit changed the runqueue counter nr_uninterruptible to an
unsigned int. Due to the fact that the counters are not updated on
migration of a uninterruptble task to a different CPU, these counters
can exceed INT_MAX.

The counter is cast to long in the load average calculation, which
means that the cast expands into negative space resulting in bogus
load average values.

Convert it back to unsigned long to fix this.

* tag 'sched-urgent-2025-07-20' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
sched: Change nr_uninterruptible type to unsigned long

+2 -2
+1 -1
kernel/sched/loadavg.c
··· 80 80 long nr_active, delta = 0; 81 81 82 82 nr_active = this_rq->nr_running - adjust; 83 - nr_active += (int)this_rq->nr_uninterruptible; 83 + nr_active += (long)this_rq->nr_uninterruptible; 84 84 85 85 if (nr_active != this_rq->calc_load_active) { 86 86 delta = nr_active - this_rq->calc_load_active;
+1 -1
kernel/sched/sched.h
··· 1149 1149 * one CPU and if it got migrated afterwards it may decrease 1150 1150 * it on another CPU. Always updated under the runqueue lock: 1151 1151 */ 1152 - unsigned int nr_uninterruptible; 1152 + unsigned long nr_uninterruptible; 1153 1153 1154 1154 union { 1155 1155 struct task_struct __rcu *donor; /* Scheduler context */