[PATCH] cleanup next_tid()
[pandora-kernel.git] / fs / ioprio.c
index 97e1f08..7fa76ed 100644 (file)
 #include <linux/kernel.h>
 #include <linux/ioprio.h>
 #include <linux/blkdev.h>
+#include <linux/capability.h>
+#include <linux/syscalls.h>
+#include <linux/security.h>
 
 static int set_task_ioprio(struct task_struct *task, int ioprio)
 {
+       int err;
        struct io_context *ioc;
 
        if (task->uid != current->euid &&
            task->uid != current->uid && !capable(CAP_SYS_NICE))
                return -EPERM;
 
+       err = security_task_setioprio(task, ioprio);
+       if (err)
+               return err;
+
        task_lock(task);
 
        task->ioprio = ioprio;
@@ -62,6 +70,8 @@ asmlinkage long sys_ioprio_set(int which, int who, int ioprio)
 
                        break;
                case IOPRIO_CLASS_IDLE:
+                       if (!capable(CAP_SYS_ADMIN))
+                               return -EPERM;
                        break;
                default:
                        return -EINVAL;