sys.c (a5a64498c194c82ecad3a2d67cff6231cda8d3dd) sys.c (76aac0e9a17742e60d408be1a706e9aaad370891)
1/*
2 * linux/kernel/sys.c
3 *
4 * Copyright (C) 1991, 1992 Linus Torvalds
5 */
6
7#include <linux/module.h>
8#include <linux/mm.h>

--- 100 unchanged lines hidden (view full) ---

109/*
110 * If set, this is used for preparing the system to power off.
111 */
112
113void (*pm_power_off_prepare)(void);
114
115static int set_one_prio(struct task_struct *p, int niceval, int error)
116{
1/*
2 * linux/kernel/sys.c
3 *
4 * Copyright (C) 1991, 1992 Linus Torvalds
5 */
6
7#include <linux/module.h>
8#include <linux/mm.h>

--- 100 unchanged lines hidden (view full) ---

109/*
110 * If set, this is used for preparing the system to power off.
111 */
112
113void (*pm_power_off_prepare)(void);
114
115static int set_one_prio(struct task_struct *p, int niceval, int error)
116{
117 uid_t euid = current_euid();
117 int no_nice;
118
118 int no_nice;
119
119 if (p->uid != current->euid &&
120 p->euid != current->euid && !capable(CAP_SYS_NICE)) {
120 if (p->uid != euid && p->euid != euid && !capable(CAP_SYS_NICE)) {
121 error = -EPERM;
122 goto out;
123 }
124 if (niceval < task_nice(p) && !can_nice(p, niceval)) {
125 error = -EACCES;
126 goto out;
127 }
128 no_nice = security_task_setnice(p, niceval);

--- 42 unchanged lines hidden (view full) ---

171 pgrp = task_pgrp(current);
172 do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
173 error = set_one_prio(p, niceval, error);
174 } while_each_pid_thread(pgrp, PIDTYPE_PGID, p);
175 break;
176 case PRIO_USER:
177 user = current->user;
178 if (!who)
121 error = -EPERM;
122 goto out;
123 }
124 if (niceval < task_nice(p) && !can_nice(p, niceval)) {
125 error = -EACCES;
126 goto out;
127 }
128 no_nice = security_task_setnice(p, niceval);

--- 42 unchanged lines hidden (view full) ---

171 pgrp = task_pgrp(current);
172 do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
173 error = set_one_prio(p, niceval, error);
174 } while_each_pid_thread(pgrp, PIDTYPE_PGID, p);
175 break;
176 case PRIO_USER:
177 user = current->user;
178 if (!who)
179 who = current->uid;
179 who = current_uid();
180 else
180 else
181 if ((who != current->uid) && !(user = find_user(who)))
181 if (who != current_uid() && !(user = find_user(who)))
182 goto out_unlock; /* No processes for this user */
183
184 do_each_thread(g, p)
185 if (p->uid == who)
186 error = set_one_prio(p, niceval, error);
187 while_each_thread(g, p);
182 goto out_unlock; /* No processes for this user */
183
184 do_each_thread(g, p)
185 if (p->uid == who)
186 error = set_one_prio(p, niceval, error);
187 while_each_thread(g, p);
188 if (who != current->uid)
188 if (who != current_uid())
189 free_uid(user); /* For find_user() */
190 break;
191 }
192out_unlock:
193 read_unlock(&tasklist_lock);
194out:
195 return error;
196}

--- 36 unchanged lines hidden (view full) ---

233 niceval = 20 - task_nice(p);
234 if (niceval > retval)
235 retval = niceval;
236 } while_each_pid_thread(pgrp, PIDTYPE_PGID, p);
237 break;
238 case PRIO_USER:
239 user = current->user;
240 if (!who)
189 free_uid(user); /* For find_user() */
190 break;
191 }
192out_unlock:
193 read_unlock(&tasklist_lock);
194out:
195 return error;
196}

--- 36 unchanged lines hidden (view full) ---

233 niceval = 20 - task_nice(p);
234 if (niceval > retval)
235 retval = niceval;
236 } while_each_pid_thread(pgrp, PIDTYPE_PGID, p);
237 break;
238 case PRIO_USER:
239 user = current->user;
240 if (!who)
241 who = current->uid;
241 who = current_uid();
242 else
242 else
243 if ((who != current->uid) && !(user = find_user(who)))
243 if (who != current_uid() && !(user = find_user(who)))
244 goto out_unlock; /* No processes for this user */
245
246 do_each_thread(g, p)
247 if (p->uid == who) {
248 niceval = 20 - task_nice(p);
249 if (niceval > retval)
250 retval = niceval;
251 }
252 while_each_thread(g, p);
244 goto out_unlock; /* No processes for this user */
245
246 do_each_thread(g, p)
247 if (p->uid == who) {
248 niceval = 20 - task_nice(p);
249 if (niceval > retval)
250 retval = niceval;
251 }
252 while_each_thread(g, p);
253 if (who != current->uid)
253 if (who != current_uid())
254 free_uid(user); /* for find_user() */
255 break;
256 }
257out_unlock:
258 read_unlock(&tasklist_lock);
259
260 return retval;
261}

--- 1543 unchanged lines hidden ---
254 free_uid(user); /* for find_user() */
255 break;
256 }
257out_unlock:
258 read_unlock(&tasklist_lock);
259
260 return retval;
261}

--- 1543 unchanged lines hidden ---