diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-12-17 07:41:31 -0500 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-12-18 11:36:38 -0500 |
commit | 9efe4f2992025c3a4027c60bf36ae9d710ca3781 (patch) | |
tree | 599ce2a4d390994a52df0edc122495b0db1359c8 /arch/s390/kernel/process.c | |
parent | 61aa4884b70cdf3b2d373e18ebbbada43789eade (diff) |
s390/mm: optimize randomize_et_dyn for !PF_RANDOMIZE
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>
Diffstat (limited to 'arch/s390/kernel/process.c')
-rw-r--r-- | arch/s390/kernel/process.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index 7ed0d4e2a435..dd145321d215 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c | |||
@@ -261,20 +261,18 @@ static inline unsigned long brk_rnd(void) | |||
261 | 261 | ||
262 | unsigned long arch_randomize_brk(struct mm_struct *mm) | 262 | unsigned long arch_randomize_brk(struct mm_struct *mm) |
263 | { | 263 | { |
264 | unsigned long ret = PAGE_ALIGN(mm->brk + brk_rnd()); | 264 | unsigned long ret; |
265 | 265 | ||
266 | if (ret < mm->brk) | 266 | ret = PAGE_ALIGN(mm->brk + brk_rnd()); |
267 | return mm->brk; | 267 | return (ret > mm->brk) ? ret : mm->brk; |
268 | return ret; | ||
269 | } | 268 | } |
270 | 269 | ||
271 | unsigned long randomize_et_dyn(unsigned long base) | 270 | unsigned long randomize_et_dyn(unsigned long base) |
272 | { | 271 | { |
273 | unsigned long ret = PAGE_ALIGN(base + brk_rnd()); | 272 | unsigned long ret; |
274 | 273 | ||
275 | if (!(current->flags & PF_RANDOMIZE)) | 274 | if (!(current->flags & PF_RANDOMIZE)) |
276 | return base; | 275 | return base; |
277 | if (ret < base) | 276 | ret = PAGE_ALIGN(base + brk_rnd()); |
278 | return base; | 277 | return (ret > base) ? ret : base; |
279 | return ret; | ||
280 | } | 278 | } |