diff options
| author | Tejun Heo <tj@kernel.org> | 2026-04-19 05:33:41 -1000 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-04-19 05:47:28 -1000 |
| commit | 87019cb6c26178cef8fb9f9265b6ab7c4bda5262 (patch) | |
| tree | c7e4863841156d9a14254f5f736eae936b7dfba6 /kernel/sched/ext.c | |
| parent | 73bd1227787bfe73eea3d04c63a89cb55db9c23e (diff) | |
| download | linux-next-87019cb6c26178cef8fb9f9265b6ab7c4bda5262.tar.gz linux-next-87019cb6c26178cef8fb9f9265b6ab7c4bda5262.zip | |
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>
Diffstat (limited to 'kernel/sched/ext.c')
| -rw-r--r-- | kernel/sched/ext.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index 012ca8bd70fb..7edd46f3ac43 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -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; |
