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.

sched_ext: Mark scx_sched_hash insecure_elasticity

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>

+1
+1
kernel/sched/ext.c
··· 32 32 .key_len = sizeof_field(struct scx_sched, ops.sub_cgroup_id), 33 33 .key_offset = offsetof(struct scx_sched, ops.sub_cgroup_id), 34 34 .head_offset = offsetof(struct scx_sched, hash_node), 35 + .insecure_elasticity = true, /* inserted under scx_sched_lock */ 35 36 }; 36 37 37 38 static struct rhashtable scx_sched_hash;