]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
c-r-prctl-add-pr_set_mm-codes-to-set-up-mm_struct-entries-fix
authorAndrew Morton <akpm@linux-foundation.org>
Fri, 16 Dec 2011 04:50:51 +0000 (15:50 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Tue, 20 Dec 2011 07:44:10 +0000 (18:44 +1100)
cache current->mm in a local, saving 200 bytes text

Cc: Andrew Vagin <avagin@openvz.org>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>
Cc: Pavel Emelyanov <xemul@parallels.com>
Cc: Serge Hallyn <serge.hallyn@canonical.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Vasiliy Kulikov <segoon@openwall.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
kernel/sys.c

index bb5f51190f89c78af44d76f19f0c615fc28a86c9..40701538fbd168db2de95315ac5c512a79686f52 100644 (file)
@@ -1701,6 +1701,7 @@ static int prctl_set_mm(int opt, unsigned long addr,
        unsigned long vm_bad_flags;
        struct vm_area_struct *vma;
        int error = 0;
+       struct mm_struct *mm = current->mm;
 
        if (arg4 | arg5)
                return -EINVAL;
@@ -1711,8 +1712,8 @@ static int prctl_set_mm(int opt, unsigned long addr,
        if (addr >= TASK_SIZE)
                return -EINVAL;
 
-       down_read(&current->mm->mmap_sem);
-       vma = find_vma(current->mm, addr);
+       down_read(&mm->mmap_sem);
+       vma = find_vma(mm, addr);
 
        if (opt != PR_SET_MM_START_BRK && opt != PR_SET_MM_BRK) {
                /* It must be existing VMA */
@@ -1732,9 +1733,9 @@ static int prctl_set_mm(int opt, unsigned long addr,
                        goto out;
 
                if (opt == PR_SET_MM_START_CODE)
-                       current->mm->start_code = addr;
+                       mm->start_code = addr;
                else
-                       current->mm->end_code = addr;
+                       mm->end_code = addr;
                break;
 
        case PR_SET_MM_START_DATA:
@@ -1747,9 +1748,9 @@ static int prctl_set_mm(int opt, unsigned long addr,
                        goto out;
 
                if (opt == PR_SET_MM_START_DATA)
-                       current->mm->start_data = addr;
+                       mm->start_data = addr;
                else
-                       current->mm->end_data = addr;
+                       mm->end_data = addr;
                break;
 
        case PR_SET_MM_START_STACK:
@@ -1762,31 +1763,31 @@ static int prctl_set_mm(int opt, unsigned long addr,
                if ((vma->vm_flags & vm_req_flags) != vm_req_flags)
                        goto out;
 
-               current->mm->start_stack = addr;
+               mm->start_stack = addr;
                break;
 
        case PR_SET_MM_START_BRK:
-               if (addr <= current->mm->end_data)
+               if (addr <= mm->end_data)
                        goto out;
 
                if (rlim < RLIM_INFINITY &&
-                   (current->mm->brk - addr) +
-                   (current->mm->end_data - current->mm->start_data) > rlim)
+                   (mm->brk - addr) +
+                   (mm->end_data - mm->start_data) > rlim)
                        goto out;
 
-               current->mm->start_brk = addr;
+               mm->start_brk = addr;
                break;
 
        case PR_SET_MM_BRK:
-               if (addr <= current->mm->end_data)
+               if (addr <= mm->end_data)
                        goto out;
 
                if (rlim < RLIM_INFINITY &&
-                   (addr - current->mm->start_brk) +
-                   (current->mm->end_data - current->mm->start_data) > rlim)
+                   (addr - mm->start_brk) +
+                   (mm->end_data - mm->start_data) > rlim)
                        goto out;
 
-               current->mm->brk = addr;
+               mm->brk = addr;
                break;
 
        default:
@@ -1797,7 +1798,7 @@ static int prctl_set_mm(int opt, unsigned long addr,
        error = 0;
 
 out:
-       up_read(&current->mm->mmap_sem);
+       up_read(&mm->mmap_sem);
 
        return error;
 }