]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/proc/base.c
oom: allow a non-CAP_SYS_RESOURCE proces to oom_score_adj down
[mv-sheeva.git] / fs / proc / base.c
index 93f1cdd5d3d7156b02a42359fb5999232020765c..9d096e82b201090b5a1fdac646f811cc6fa8bc57 100644 (file)
@@ -1151,7 +1151,7 @@ static ssize_t oom_score_adj_write(struct file *file, const char __user *buf,
                goto err_task_lock;
        }
 
-       if (oom_score_adj < task->signal->oom_score_adj &&
+       if (oom_score_adj < task->signal->oom_score_adj_min &&
                        !capable(CAP_SYS_RESOURCE)) {
                err = -EACCES;
                goto err_sighand;
@@ -1164,6 +1164,8 @@ static ssize_t oom_score_adj_write(struct file *file, const char __user *buf,
                        atomic_dec(&task->mm->oom_disable_count);
        }
        task->signal->oom_score_adj = oom_score_adj;
+       if (has_capability_noaudit(current, CAP_SYS_RESOURCE))
+               task->signal->oom_score_adj_min = oom_score_adj;
        /*
         * Scale /proc/pid/oom_adj appropriately ensuring that OOM_DISABLE is
         * always attainable.