s390/mm: optimize randomize_et_dyn for !PF_RANDOMIZE
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 17 Dec 2013 12:41:31 +0000 (13:41 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 18 Dec 2013 16:36:38 +0000 (17:36 +0100)
Skip the call to brk_rnd() if the PF_RANDOMIZE flag is not set for
the process. This avoids the costly get_random_int() call. Modify
arch_randomize_brk() as well to make it look like randomize_et_dyn().

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/process.c

index 7ed0d4e2a435452733173767b56af52163334980..dd145321d2151d11f37c7694968f384326eb7804 100644 (file)
@@ -261,20 +261,18 @@ static inline unsigned long brk_rnd(void)
 
 unsigned long arch_randomize_brk(struct mm_struct *mm)
 {
-       unsigned long ret = PAGE_ALIGN(mm->brk + brk_rnd());
+       unsigned long ret;
 
-       if (ret < mm->brk)
-               return mm->brk;
-       return ret;
+       ret = PAGE_ALIGN(mm->brk + brk_rnd());
+       return (ret > mm->brk) ? ret : mm->brk;
 }
 
 unsigned long randomize_et_dyn(unsigned long base)
 {
-       unsigned long ret = PAGE_ALIGN(base + brk_rnd());
+       unsigned long ret;
 
        if (!(current->flags & PF_RANDOMIZE))
                return base;
-       if (ret < base)
-               return base;
-       return ret;
+       ret = PAGE_ALIGN(base + brk_rnd());
+       return (ret > base) ? ret : base;
 }