Re: [PATCH] mm: larger stack guard gap, between vmas

From: Willy Tarreau
Date: Thu Jun 22 2017 - 09:29:06 EST


On Thu, Jun 22, 2017 at 03:10:34PM +0200, Willy Tarreau wrote:
> On Thu, Jun 22, 2017 at 01:58:11PM +0100, Ben Hutchings wrote:
> > On Thu, 2017-06-22 at 14:46 +0200, Willy Tarreau wrote:
> > > On Thu, Jun 22, 2017 at 01:30:45PM +0100, Ben Hutchings wrote:
> > > > Here's my attempt at a backport to 3.2.  This is only tested on
> > > > x86_64 and I think I should introduce local variables for
> > > > vma_start_gap() in a few places.  I had to cherry-pick commit
> > > > 09884964335e "mm: do not grow the stack vma just because of an overrun
> > > > on preceding vma" before this one (which was a clean cherry-pick).
> > >
> > > Ben, I can't apply it on top of 3.2.89 + the patch above, do you have
> > > any other patch in your local branch ? For example the patch tries to
> > > modify a hunk starting at line 183 of arch/arm/mm/mmap.c while the one
> > > I'm having here ends at line 159.
> >
> > Sorry, yes, I did this on top of the Debian 3.2 branch and that *does*
> > have a patch to arch/arm/mm/mmap.c that I had forgotten about (commit
> > 7dbaa466780a "ARM: 7169/1: topdown mmap support"). I think you can
> > just drop the changes in ARM's arch_get_unmapped_area_topdown().
>
> Thanks, I've just applied this one and it's building now. I'll run the
> same checks I did for 3.10.

So I tested this with gap.c on an i386 VM running 2G/2G split memory, all
went fine. It properly stopped the stack growth before colliding with anon
pages.

I noticed that you included Hugh's last fix in it (mm: fix new crash in
unmapped_area_topdown). You'll also need Helge's fix bd726c90b ("Allow
stack to grow up to address space limit"), which applies without issues
on top of your patch.

I would have happily tested on an ARM board but I don't seem to have
3.2-compatible ARM boards with 2G of RAM :-/

Willy