[LTP] [PATCH 1/1] mmap20: Fix invalid address

Li Wang liwang@redhat.com
Thu Apr 6 14:37:36 CEST 2023


On Thu, Apr 6, 2023 at 7:13 PM Petr Vorel <pvorel@suse.cz> wrote:

> Hi all,
>
> > On Thu, Apr 6, 2023 at 5:49 PM Petr Vorel <pvorel@suse.cz> wrote:
>
> > > Hi all,
>
> > > > Hi Petr,
>
> > > > (1<<9) is also used by another flag on alpha, but it said not
> > > > linux-specific,
> > > > so I guess it won't be a problem (at least for now).
> > > >   alpha/include/uapi/asm/mman.h:#define _MAP_HASSEMAPHORE 0x0200
>
> > > Good point! I checked only glibc/musl headers, obviously checking
> kernel
> > > sources
> > > is better as it contains old archs. It affects alpha, ia64 and sparc
> > > (well, they might not even compile current LTP, we were dropping ia64
> fixes
> > > anyway).
>
>
> > Okay, I only noticed that alpha is not defined 0x0200 for Linux
> > specifically.
>
> > > $ git grep -w 0x0200 arch/*/include/uapi/asm/mman.h
> > > arch/alpha/include/uapi/asm/mman.h:#define _MAP_HASSEMAPHORE 0x0200
> > > arch/ia64/include/uapi/asm/mman.h:#define MAP_GROWSUP   0x0200
>   /*
> > > register stack-like segment */
> > > arch/sparc/include/uapi/asm/mman.h:#define MAP_GROWSDOWN        0x0200
> > >       /* stack-like segment */
>
> > > But as 0x400 (1 << 10) is not used anywhere, I merged it with this
> value.
>
>
>
> > Hmm, I didn't understand here why merged with 0x0400,
> > aren't there still duplicated flags?
>
> > $ git grep -w 0x0400 arch/*/include/uapi/asm/mman.h
> > arch/alpha/include/uapi/asm/mman.h:#define _MAP_INHERIT 0x0400
> > arch/mips/include/uapi/asm/mman.h:#define MAP_NORESERVE 0x0400
> /*
> > don't check for reservations */
> > arch/xtensa/include/uapi/asm/mman.h:#define MAP_NORESERVE       0x0400
> >      /* don't check for reservations */
>
> I'm sorry I now don't know what I greped, because there are results for
> 0x0400 :(.
> Obviously last minute change without ack is a bad practise.
>
> You're right, linux specific 0x0400 is in mips and xtensa (it's non-linux
> specific on alpha). OTOH ia64 and sparc define:
>
> arch/ia64/include/uapi/asm/mman.h
> #define MAP_GROWSUP     0x0200          /* register stack-like segment */
>
> arch/sparc/include/uapi/asm/mman.h
> #define MAP_GROWSDOWN   0x0200          /* stack-like segment */
>
> Are these used as flags? If yes none of the values is optimal as it breaks
> some
>

The answer is yes, MAP_GROWSDOWN/GROWSUP is
widely used for stack growth direction.

It is hard to choose an unused value for INVALID_FLAG,
as it there possibly be duplicated in the future we don't know.



> arch. If you agree, I'd keep 0x0400 and follow Jan's suggestion (don't map
> a
> file, and then add MAP_SYNC to flags).
>

Add MAP_SYNC sounds like a good practice, we can have a try.

-- 
Regards,
Li Wang


More information about the ltp mailing list