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 --- |