]> git.ipfire.org Git - thirdparty/linux.git/commit
sched_ext: Allow p->scx.disallow only while loading
authorTejun Heo <tj@kernel.org>
Thu, 1 Aug 2024 23:32:59 +0000 (13:32 -1000)
committerTejun Heo <tj@kernel.org>
Fri, 2 Aug 2024 18:59:32 +0000 (08:59 -1000)
commite99129e5dbf7ca87233d31ad19348f6ce8627b38
treed45223c3d4b99c520d5252be56604baab10d10d9
parenta2f4b16e736d62892ffd333996a7d682b57f6664
sched_ext: Allow p->scx.disallow only while loading

From 1232da7eced620537a78f19c8cf3d4a3508e2419 Mon Sep 17 00:00:00 2001
From: Tejun Heo <tj@kernel.org>
Date: Wed, 31 Jul 2024 09:14:52 -1000

p->scx.disallow provides a way for the BPF scheduler to reject certain tasks
from attaching. It's currently allowed for both the load and fork paths;
however, the latter doesn't actually work as p->sched_class is already set
by the time scx_ops_init_task() is called during fork.

This is a convenience feature which is mostly useful from the load path
anyway. Allow it only from the load path.

v2: Trigger scx_ops_error() iff @p->policy == SCHED_EXT to make it a bit
    easier for the BPF scheduler (David).

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: "Zhangqiao (2012 lab)" <zhangqiao22@huawei.com>
Link: http://lkml.kernel.org/r/20240711110720.1285-1-zhangqiao22@huawei.com
Fixes: 7bb6f0810ecf ("sched_ext: Allow BPF schedulers to disallow specific tasks from joining SCHED_EXT")
Acked-by: David Vernet <void@manifault.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
include/linux/sched/ext.h
kernel/sched/ext.c