]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sched_ext: Mark scx_sched_hash insecure_elasticity
authorTejun Heo <tj@kernel.org>
Sun, 19 Apr 2026 15:33:41 +0000 (05:33 -1000)
committerTejun Heo <tj@kernel.org>
Sun, 19 Apr 2026 15:47:28 +0000 (05:47 -1000)
scx_sched_hash is inserted into under scx_sched_lock (raw_spinlock_irq)
in scx_link_sched(). rhashtable's sync grow path calls get_random_u32()
and does a GFP_ATOMIC allocation; both acquire regular spinlocks, which
is unsafe under raw_spinlock_t. Set insecure_elasticity to skip the
sync grow.

v2:
- Dropped dsq_hash changes. Insertion is not under raw_spin_lock.

- Switched from no_sync_grow flag to insecure_elasticity.

Fixes: 25037af712eb ("sched_ext: Add rhashtable lookup for sub-schedulers")
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/sched/ext.c

index 012ca8bd70fbdf75a04cd5b0cd012501a184790d..7edd46f3ac43a54b5ca39d7d865261d27c71cca4 100644 (file)
@@ -32,6 +32,7 @@ static const struct rhashtable_params scx_sched_hash_params = {
        .key_len                = sizeof_field(struct scx_sched, ops.sub_cgroup_id),
        .key_offset             = offsetof(struct scx_sched, ops.sub_cgroup_id),
        .head_offset            = offsetof(struct scx_sched, hash_node),
+       .insecure_elasticity    = true, /* inserted under scx_sched_lock */
 };
 
 static struct rhashtable scx_sched_hash;