]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - mm/mempolicy.c
CRED: Separate task security context from task_struct
[net-next-2.6.git] / mm / mempolicy.c
index 07a96474077d23c7ba9fff672e6120a447973dce..b23492ee3e5072dbc74814bf06e9635de7f16422 100644 (file)
@@ -1110,12 +1110,12 @@ asmlinkage long sys_migrate_pages(pid_t pid, unsigned long maxnode,
                const unsigned long __user *old_nodes,
                const unsigned long __user *new_nodes)
 {
+       struct cred *cred, *tcred;
        struct mm_struct *mm;
        struct task_struct *task;
        nodemask_t old;
        nodemask_t new;
        nodemask_t task_nodes;
-       uid_t uid, euid;
        int err;
 
        err = get_nodes(&old, old_nodes, maxnode);
@@ -1145,10 +1145,10 @@ asmlinkage long sys_migrate_pages(pid_t pid, unsigned long maxnode,
         * capabilities, superuser privileges or the same
         * userid as the target process.
         */
-       uid = current_uid();
-       euid = current_euid();
-       if (euid != task->suid && euid != task->uid &&
-           uid  != task->suid && uid  != task->uid &&
+       cred = current->cred;
+       tcred = task->cred;
+       if (cred->euid != tcred->suid && cred->euid != tcred->uid &&
+           cred->uid  != tcred->suid && cred->uid  != tcred->uid &&
            !capable(CAP_SYS_NICE)) {
                err = -EPERM;
                goto out;