]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Merge tag 'sched_ext-for-7.0-rc2-fixes' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 3 Mar 2026 22:14:20 +0000 (14:14 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 3 Mar 2026 22:14:20 +0000 (14:14 -0800)
Pull sched_ext fixes from Tejun Heo:

 - Fix starvation of scx_enable() under fair-class saturation by
   offloading the enable path to an RT kthread

 - Fix out-of-bounds access in idle mask initialization on systems with
   non-contiguous NUMA node IDs

 - Fix a preemption window during scheduler exit and a refcount
   underflow in cgroup init error path

 - Fix SCX_EFLAG_INITIALIZED being a no-op flag

 - Add READ_ONCE() annotations for KCSAN-clean lockless accesses and
   replace naked scx_root dereferences with container_of() in kobject
   callbacks

 - Tooling and selftest fixes: compilation issues with clang 17,
   strtoul() misuse, unused options cleanup, and Kconfig sync

* tag 'sched_ext-for-7.0-rc2-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext:
  sched_ext: Fix starvation of scx_enable() under fair-class saturation
  sched_ext: Remove redundant css_put() in scx_cgroup_init()
  selftests/sched_ext: Fix peek_dsq.bpf.c compile error for clang 17
  selftests/sched_ext: Add -fms-extensions to bpf build flags
  tools/sched_ext: Add -fms-extensions to bpf build flags
  sched_ext: Use READ_ONCE() for plain reads of scx_watchdog_timeout
  sched_ext: Replace naked scx_root dereferences in kobject callbacks
  sched_ext: Use READ_ONCE() for the read side of dsq->nr update
  tools/sched_ext: fix strtoul() misuse in scx_hotplug_seq()
  sched_ext: Fix SCX_EFLAG_INITIALIZED being a no-op flag
  sched_ext: Fix out-of-bounds access in scx_idle_init_masks()
  sched_ext: Disable preemption between scx_claim_exit() and kicking helper work
  tools/sched_ext: Add Kconfig to sync with upstream
  tools/sched_ext: Sync README.md Kconfig with upstream scx
  selftests/sched_ext: Remove duplicated unistd.h include in rt_stall.c
  tools/sched_ext: scx_sdt: Remove unused '-f' option
  tools/sched_ext: scx_central: Remove unused '-p' option
  selftests/sched_ext: Fix unused-result warning for read()
  selftests/sched_ext: Abort test loop on signal

1  2 
kernel/sched/ext.c
kernel/sched/ext_idle.c

Simple merge
index c5a3b0bac7c3d22b00335e5f9ff50cb9d22dc2ef,e2da6c3968a667ec170def37d3bb6557b7f16862..ba298ac3ce6cc15e3c31f10013436f8e3026d298
@@@ -663,9 -663,9 +663,8 @@@ void scx_idle_init_masks(void
        BUG_ON(!alloc_cpumask_var(&scx_idle_global_masks.cpu, GFP_KERNEL));
        BUG_ON(!alloc_cpumask_var(&scx_idle_global_masks.smt, GFP_KERNEL));
  
-       /* Allocate per-node idle cpumasks */
-       scx_idle_node_masks = kzalloc_objs(*scx_idle_node_masks,
-                                          num_possible_nodes());
+       /* Allocate per-node idle cpumasks (use nr_node_ids for non-contiguous NUMA nodes) */
 -      scx_idle_node_masks = kcalloc(nr_node_ids,
 -                                    sizeof(*scx_idle_node_masks), GFP_KERNEL);
++      scx_idle_node_masks = kzalloc_objs(*scx_idle_node_masks, nr_node_ids);
        BUG_ON(!scx_idle_node_masks);
  
        for_each_node(i) {