sched: Clean up parameter passing of proc_sched_autogroup_set_nice()

Pass nice as a value to proc_sched_autogroup_set_nice().

No side effect is expected, and the variable err will be overwritten with
the return value.

Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/4F45FBB7.5090607@ct.jp.nec.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Hiroshi Shimamoto 2012-02-23 17:41:27 +09:00 коммит произвёл Ingo Molnar
Родитель 367456c756
Коммит 2e5b5b3a1b
3 изменённых файлов: 8 добавлений и 9 удалений

Просмотреть файл

@ -1310,8 +1310,7 @@ sched_autogroup_write(struct file *file, const char __user *buf,
if (!p) if (!p)
return -ESRCH; return -ESRCH;
err = nice; err = proc_sched_autogroup_set_nice(p, nice);
err = proc_sched_autogroup_set_nice(p, &err);
if (err) if (err)
count = err; count = err;

Просмотреть файл

@ -2065,7 +2065,7 @@ extern void sched_autogroup_fork(struct signal_struct *sig);
extern void sched_autogroup_exit(struct signal_struct *sig); extern void sched_autogroup_exit(struct signal_struct *sig);
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
extern void proc_sched_autogroup_show_task(struct task_struct *p, struct seq_file *m); extern void proc_sched_autogroup_show_task(struct task_struct *p, struct seq_file *m);
extern int proc_sched_autogroup_set_nice(struct task_struct *p, int *nice); extern int proc_sched_autogroup_set_nice(struct task_struct *p, int nice);
#endif #endif
#else #else
static inline void sched_autogroup_create_attach(struct task_struct *p) { } static inline void sched_autogroup_create_attach(struct task_struct *p) { }

Просмотреть файл

@ -195,20 +195,20 @@ __setup("noautogroup", setup_autogroup);
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
int proc_sched_autogroup_set_nice(struct task_struct *p, int *nice) int proc_sched_autogroup_set_nice(struct task_struct *p, int nice)
{ {
static unsigned long next = INITIAL_JIFFIES; static unsigned long next = INITIAL_JIFFIES;
struct autogroup *ag; struct autogroup *ag;
int err; int err;
if (*nice < -20 || *nice > 19) if (nice < -20 || nice > 19)
return -EINVAL; return -EINVAL;
err = security_task_setnice(current, *nice); err = security_task_setnice(current, nice);
if (err) if (err)
return err; return err;
if (*nice < 0 && !can_nice(current, *nice)) if (nice < 0 && !can_nice(current, nice))
return -EPERM; return -EPERM;
/* this is a heavy operation taking global locks.. */ /* this is a heavy operation taking global locks.. */
@ -219,9 +219,9 @@ int proc_sched_autogroup_set_nice(struct task_struct *p, int *nice)
ag = autogroup_task_get(p); ag = autogroup_task_get(p);
down_write(&ag->lock); down_write(&ag->lock);
err = sched_group_set_shares(ag->tg, prio_to_weight[*nice + 20]); err = sched_group_set_shares(ag->tg, prio_to_weight[nice + 20]);
if (!err) if (!err)
ag->nice = *nice; ag->nice = nice;
up_write(&ag->lock); up_write(&ag->lock);
autogroup_kref_put(ag); autogroup_kref_put(ag);