|
@@ -683,8 +683,6 @@ static ssize_t oom_adjust_write(struct file *file, const char __user *buf,
|
|
|
char buffer[PROC_NUMBUF], *end;
|
|
|
int oom_adjust;
|
|
|
|
|
|
- if (!capable(CAP_SYS_RESOURCE))
|
|
|
- return -EPERM;
|
|
|
memset(buffer, 0, sizeof(buffer));
|
|
|
if (count > sizeof(buffer) - 1)
|
|
|
count = sizeof(buffer) - 1;
|
|
@@ -699,6 +697,10 @@ static ssize_t oom_adjust_write(struct file *file, const char __user *buf,
|
|
|
task = get_proc_task(file->f_dentry->d_inode);
|
|
|
if (!task)
|
|
|
return -ESRCH;
|
|
|
+ if (oom_adjust < task->oomkilladj && !capable(CAP_SYS_RESOURCE)) {
|
|
|
+ put_task_struct(task);
|
|
|
+ return -EACCES;
|
|
|
+ }
|
|
|
task->oomkilladj = oom_adjust;
|
|
|
put_task_struct(task);
|
|
|
if (end - buffer == 0)
|