Skip to contentSkip to conversation

cpuset: limit the input of cpuset.sched_relax_domain_level

PATCH Applied Li Zefan 5 participants 7 messages May 13, 2008 Documentation

lore
Share & tools
lore

Li Zefan

author
#0 lore raw

PATCH 1/1 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.

---
 Documentation/cpusets.txt |    2 +-
 kernel/cpuset.c           |    4 ++--
 kernel/sched.c            |    7 ++++++-
 3 files changed, 9 insertions(+), 4 deletions(-)
Documentation/cpusets.txt +1 -1
index fb7b361..9066ce7 100644
@@ -542,7 +542,7 @@ otherwise initial value -1 that indicates the cpuset has no request.
    2  : search cores in a package.
    3  : search cpus in a node [= system wide on non-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
 belongs to.  Therefore if the flag 'sched_load_balance' of a cpuset
kernel/cpuset.c +2 -2
index 86ea9e3..c192213 100644
@@ -1033,8 +1033,8 @@ int current_cpuset_is_being_rebound(void)
 
 static int update_relax_domain_level(struct cpuset *cs, s64 val)
 {
-	if ((int)val < 0)
-		val = -1;
+	if (val < -1 || val >= SD_LV_MAX)
+		return -EINVAL;
 
 	if (val != cs->relax_domain_level) {
 		cs->relax_domain_level = val;
kernel/sched.c +6 -1
index 8841a91..24d499e 100644
@@ -7219,7 +7219,12 @@ static int default_relax_domain_level = -1;
 
 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;
 }
 __setup("relax_domain_level=", setup_relax_domain_level);
Signature · 1 line
1.5.4.rc3
Acked-by on v1 1/1
#1 lore raw
Quoted 4 lines · Li Zefan

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

Quoted 55 lines

---

  Documentation/cpusets.txt |    2 +-
  kernel/cpuset.c           |    4 ++--
  kernel/sched.c            |    7 ++++++-
  3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/Documentation/cpusets.txt b/Documentation/cpusets.txt
index fb7b361..9066ce7 100644
--- a/Documentation/cpusets.txt
+++ b/Documentation/cpusets.txt
@@ -542,7 +542,7 @@ otherwise initial value -1 that indicates the cpuset has no request.

    2  : search cores in a package.
    3  : search cpus in a node [= system wide on non-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 belongs to. Therefore if the flag 'sched_load_balance' of a cpuset
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index 86ea9e3..c192213 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -1033,8 +1033,8 @@ int current_cpuset_is_being_rebound(void)

static int update_relax_domain_level(struct cpuset *cs, s64 val) {
- if ((int)val < 0)
- val = -1;
+ if (val < -1 || val >= SD_LV_MAX)
+ return -EINVAL;

        if (val != cs->relax_domain_level) {
                cs->relax_domain_level = val;

diff --git a/kernel/sched.c b/kernel/sched.c
index 8841a91..24d499e 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -7219,7 +7219,12 @@ static int default_relax_domain_level = -1;

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;

}
__setup("relax_domain_level=", setup_relax_domain_level);
--
1.5.4.rc3

#6 lore raw
In reply to Li Zefan
Quoted 2 lines · Li Zefan

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

Looks good to me. Thanks!

H.Seto