[tip:sched/urgent] sched, cgroups: Fix MIN_SHARES on 64-bit boxen

From: tip-bot for Mike Galbraith
Date: Fri Jul 01 2011 - 11:16:03 EST


Commit-ID: cd62287e364c0d15d517c6ced4e4808b54711475
Gitweb: http://git.kernel.org/tip/cd62287e364c0d15d517c6ced4e4808b54711475
Author: Mike Galbraith <mgalbraith@xxxxxxx>
AuthorDate: Sat, 4 Jun 2011 15:03:20 +0200
Committer: Ingo Molnar <mingo@xxxxxxx>
CommitDate: Fri, 1 Jul 2011 10:25:03 +0200

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@xxxxxx>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
Cc: Nikhil Rao <ncrao@xxxxxxxxxx>
Link: http://lkml.kernel.org/r/1307192600.8618.3.camel@xxxxxxxxxxxxxxxx
Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
---
kernel/sched.c | 9 +++------
1 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/kernel/sched.c b/kernel/sched.c
index 3f2e502..9769c75 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -292,8 +292,8 @@ static DEFINE_SPINLOCK(task_group_lock);
* (The default weight is 1024 - so there's no practical
* limitation from this.)
*/
-#define MIN_SHARES 2
-#define MAX_SHARES (1UL << (18 + SCHED_LOAD_RESOLUTION))
+#define MIN_SHARES (1UL << 1)
+#define MAX_SHARES (1UL << 18)

static int root_task_group_load = ROOT_TASK_GROUP_LOAD;
#endif
@@ -8450,10 +8450,7 @@ int sched_group_set_shares(struct task_group *tg, unsigned long shares)
if (!tg->se[0])
return -EINVAL;

- if (shares < MIN_SHARES)
- shares = MIN_SHARES;
- else if (shares > MAX_SHARES)
- shares = MAX_SHARES;
+ shares = clamp(shares, scale_load(MIN_SHARES), scale_load(MAX_SHARES));

mutex_lock(&shares_mutex);
if (tg->shares == shares)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/