Thread (29 messages) 29 messages, 6 authors, 2019-07-26

Re: [PATCH REBASE v4 11/14] mips: Adjust brk randomization offset to fit generic version

From: Alexandre Ghiti <alex@ghiti.fr>
Date: 2019-07-25 06:22:16
Also in: linux-fsdevel, linux-mips, linux-mm, linux-riscv, lkml
Subsystem: mips, the rest · Maintainers: Thomas Bogendoerfer, Linus Torvalds

On 7/24/19 7:58 AM, Alexandre Ghiti wrote:
quoted hunk ↗ jump to hunk
This commit simply bumps up to 32MB and 1GB the random offset
of brk, compared to 8MB and 256MB, for 32bit and 64bit respectively.

Suggested-by: Kees Cook <redacted>
Signed-off-by: Alexandre Ghiti <alex@ghiti.fr>
Reviewed-by: Kees Cook <redacted>
---
  arch/mips/mm/mmap.c | 7 ++++---
  1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/arch/mips/mm/mmap.c b/arch/mips/mm/mmap.c
index a7e84b2e71d7..faa5aa615389 100644
--- a/arch/mips/mm/mmap.c
+++ b/arch/mips/mm/mmap.c
@@ -16,6 +16,7 @@
  #include <linux/random.h>
  #include <linux/sched/signal.h>
  #include <linux/sched/mm.h>
+#include <linux/sizes.h>
  
  unsigned long shm_align_mask = PAGE_SIZE - 1;	/* Sane caches */
  EXPORT_SYMBOL(shm_align_mask);
@@ -189,11 +190,11 @@ static inline unsigned long brk_rnd(void)
  	unsigned long rnd = get_random_long();
  
  	rnd = rnd << PAGE_SHIFT;
-	/* 8MB for 32bit, 256MB for 64bit */
+	/* 32MB for 32bit, 1GB for 64bit */
  	if (TASK_IS_32BIT_ADDR)
-		rnd = rnd & 0x7ffffful;
+		rnd = rnd & SZ_32M;
  	else
-		rnd = rnd & 0xffffffful;
+		rnd = rnd & SZ_1G;
  
  	return rnd;
  }
Hi Andrew,

I have just noticed that this patch is wrong, do you want me to send
another version of the entire series or is the following diff enough ?
This mistake gets fixed anyway in patch 13/14 when it gets merged with the
generic version.

Sorry about that,

Thanks,

Alex
diff --git a/arch/mips/mm/mmap.c b/arch/mips/mm/mmap.c
index a7e84b2e71d7..ff6ab87e9c56 100644
--- a/arch/mips/mm/mmap.c
+++ b/arch/mips/mm/mmap.c
@@ -16,6 +16,7 @@
  #include <linux/random.h>
  #include <linux/sched/signal.h>
  #include <linux/sched/mm.h>
+#include <linux/sizes.h>

  unsigned long shm_align_mask = PAGE_SIZE - 1;  /* Sane caches */
  EXPORT_SYMBOL(shm_align_mask);
@@ -189,11 +190,11 @@ static inline unsigned long brk_rnd(void)
         unsigned long rnd = get_random_long();

         rnd = rnd << PAGE_SHIFT;
-       /* 8MB for 32bit, 256MB for 64bit */
+       /* 32MB for 32bit, 1GB for 64bit */
         if (TASK_IS_32BIT_ADDR)
-               rnd = rnd & 0x7ffffful;
+               rnd = rnd & (SZ_32M - 1);
         else
-               rnd = rnd & 0xffffffful;
+               rnd = rnd & (SZ_1G - 1);

         return rnd;
  }



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help