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

From: Kees Cook
Date: Thu Jul 25 2019 - 16:00:37 EST


On Thu, Jul 25, 2019 at 08:22:06AM +0200, Alexandre Ghiti wrote:
> 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@xxxxxxxxxxxx>
> > Signed-off-by: Alexandre Ghiti <alex@xxxxxxxx>
> > Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx>
> > ---
> > 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.

While I can't speak for Andrew, I'd say, since you've got Paul and
Luis's Acks to add now, I'd say go ahead and respin with the fix and the
Acks added.

I'm really looking forward to this cleanup! Thanks again for working on
it. :)

--
Kees Cook