diff options
author | Mike Galbraith <mgalbraith@suse.de> | 2011-06-04 09:03:20 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-07-01 04:25:03 -0400 |
commit | cd62287e364c0d15d517c6ced4e4808b54711475 (patch) | |
tree | 12544d4a0b84f378691be2a1d3d48a46f42595fc /kernel | |
parent | daf54f1f363a61c618662ef66d4bf09d2b090941 (diff) |
sched, cgroups: Fix MIN_SHARES on 64-bit boxen
Commit c8b28116 ("sched: Increase SCHED_LOAD_SCALE resolution")
intended to have no user-visible effect, but allows setting
cpu.shares to < MIN_SHARES, which the user then sees.
Signed-off-by: Mike Galbraith <efault@gmx.de>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Nikhil Rao <ncrao@google.com>
Link: http://lkml.kernel.org/r/1307192600.8618.3.camel@marge.simson.net
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sched.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 3f2e502d609b..9769c756ad66 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -292,8 +292,8 @@ static DEFINE_SPINLOCK(task_group_lock); | |||
292 | * (The default weight is 1024 - so there's no practical | 292 | * (The default weight is 1024 - so there's no practical |
293 | * limitation from this.) | 293 | * limitation from this.) |
294 | */ | 294 | */ |
295 | #define MIN_SHARES 2 | 295 | #define MIN_SHARES (1UL << 1) |
296 | #define MAX_SHARES (1UL << (18 + SCHED_LOAD_RESOLUTION)) | 296 | #define MAX_SHARES (1UL << 18) |
297 | 297 | ||
298 | static int root_task_group_load = ROOT_TASK_GROUP_LOAD; | 298 | static int root_task_group_load = ROOT_TASK_GROUP_LOAD; |
299 | #endif | 299 | #endif |
@@ -8450,10 +8450,7 @@ int sched_group_set_shares(struct task_group *tg, unsigned long shares) | |||
8450 | if (!tg->se[0]) | 8450 | if (!tg->se[0]) |
8451 | return -EINVAL; | 8451 | return -EINVAL; |
8452 | 8452 | ||
8453 | if (shares < MIN_SHARES) | 8453 | shares = clamp(shares, scale_load(MIN_SHARES), scale_load(MAX_SHARES)); |
8454 | shares = MIN_SHARES; | ||
8455 | else if (shares > MAX_SHARES) | ||
8456 | shares = MAX_SHARES; | ||
8457 | 8454 | ||
8458 | mutex_lock(&shares_mutex); | 8455 | mutex_lock(&shares_mutex); |
8459 | if (tg->shares == shares) | 8456 | if (tg->shares == shares) |