Messages in this thread Patch in this message | | | Subject | Re: [PATCH REBASE v4 11/14] mips: Adjust brk randomization offset to fit generic version | From | Alexandre Ghiti <> | Date | Thu, 25 Jul 2019 08:22:06 +0200 |
| |
On 7/24/19 7:58 AM, Alexandre Ghiti wrote: > 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 <keescook@chromium.org> > Signed-off-by: Alexandre Ghiti <alex@ghiti.fr> > Reviewed-by: Kees Cook <keescook@chromium.org> > --- > 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; }
| |