sched/rt: Change the type of 'sysctl_sched_rt_period' from 'unsigned int' to 'int'
authorYajun Deng <yajun.deng@linux.dev>
Sun, 8 Oct 2023 02:15:38 +0000 (10:15 +0800)
committerIngo Molnar <mingo@kernel.org>
Mon, 9 Oct 2023 10:44:56 +0000 (12:44 +0200)
Doing this matches the natural type of 'int' based calculus
in sched_rt_handler(), and also enables the adding in of a
correct upper bounds check on the sysctl interface.

[ mingo: Rewrote the changelog. ]

Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20231008021538.3063250-1-yajun.deng@linux.dev
kernel/sched/rt.c
kernel/sched/sched.h

index 88fc98601413ac16dcab1c0ae4192f950cd67edb..76d82a096e038b17dad0408508d2a1023cbcad39 100644 (file)
@@ -16,7 +16,7 @@ struct rt_bandwidth def_rt_bandwidth;
  * period over which we measure -rt task CPU usage in us.
  * default: 1s
  */
-unsigned int sysctl_sched_rt_period = 1000000;
+int sysctl_sched_rt_period = 1000000;
 
 /*
  * part of the period that we allow rt tasks to run in us.
@@ -34,7 +34,7 @@ static struct ctl_table sched_rt_sysctls[] = {
        {
                .procname       = "sched_rt_period_us",
                .data           = &sysctl_sched_rt_period,
-               .maxlen         = sizeof(unsigned int),
+               .maxlen         = sizeof(int),
                .mode           = 0644,
                .proc_handler   = sched_rt_handler,
                .extra1         = SYSCTL_ONE,
@@ -47,7 +47,7 @@ static struct ctl_table sched_rt_sysctls[] = {
                .mode           = 0644,
                .proc_handler   = sched_rt_handler,
                .extra1         = SYSCTL_NEG_ONE,
-               .extra2         = SYSCTL_INT_MAX,
+               .extra2         = (void *)&sysctl_sched_rt_period,
        },
        {
                .procname       = "sched_rr_timeslice_ms",
index 649eb9ec06575a631eebc3a465f2e500413821f0..515eb4cffd5e2a962e0e35b6aaaab9c4fbb2018a 100644 (file)
@@ -105,7 +105,7 @@ extern long calc_load_fold_active(struct rq *this_rq, long adjust);
 
 extern void call_trace_sched_update_nr_running(struct rq *rq, int count);
 
-extern unsigned int sysctl_sched_rt_period;
+extern int sysctl_sched_rt_period;
 extern int sysctl_sched_rt_runtime;
 extern int sched_rr_timeslice;