cpuset: limit the input of cpuset.sched_relax_domain_level

We allow the inputs to be [-1 ... SD_LV_MAX), and return -EINVAL
for inputs outside this range.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Acked-by: Paul Menage <menage@google.com>
Acked-by: Paul Jackson <pj@sgi.com>
Acked-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Li Zefan 2008-05-13 10:27:17 +08:00 committed by Ingo Molnar
parent 9bedbcb207
commit 30e0e17819
3 changed files with 9 additions and 4 deletions

View file

@ -542,7 +542,7 @@ otherwise initial value -1 that indicates the cpuset has no request.
2 : search cores in a package. 2 : search cores in a package.
3 : search cpus in a node [= system wide on non-NUMA system] 3 : search cpus in a node [= system wide on non-NUMA system]
( 4 : search nodes in a chunk of node [on NUMA system] ) ( 4 : search nodes in a chunk of node [on NUMA system] )
( 5~ : search system wide [on NUMA system]) ( 5 : search system wide [on NUMA system] )
This file is per-cpuset and affect the sched domain where the cpuset This file is per-cpuset and affect the sched domain where the cpuset
belongs to. Therefore if the flag 'sched_load_balance' of a cpuset belongs to. Therefore if the flag 'sched_load_balance' of a cpuset

View file

@ -1037,8 +1037,8 @@ int current_cpuset_is_being_rebound(void)
static int update_relax_domain_level(struct cpuset *cs, s64 val) static int update_relax_domain_level(struct cpuset *cs, s64 val)
{ {
if ((int)val < 0) if (val < -1 || val >= SD_LV_MAX)
val = -1; return -EINVAL;
if (val != cs->relax_domain_level) { if (val != cs->relax_domain_level) {
cs->relax_domain_level = val; cs->relax_domain_level = val;

View file

@ -6877,7 +6877,12 @@ static int default_relax_domain_level = -1;
static int __init setup_relax_domain_level(char *str) static int __init setup_relax_domain_level(char *str)
{ {
default_relax_domain_level = simple_strtoul(str, NULL, 0); unsigned long val;
val = simple_strtoul(str, NULL, 0);
if (val < SD_LV_MAX)
default_relax_domain_level = val;
return 1; return 1;
} }
__setup("relax_domain_level=", setup_relax_domain_level); __setup("relax_domain_level=", setup_relax_domain_level);