Re: [PATCH] remove duplicate asm/mman.h files

Hugh Dickins
2009-09-21T12:02:44Z

On Mon, 21 Sep 2009, David Rientjes wrote:
> On Mon, 21 Sep 2009, Arnd Bergmann wrote:
>
> > > > -#define MCL_CURRENT 1 /* lock all current mappings */
> > > > -#define MCL_FUTURE 2 /* lock all future mappings */
> > > > +#define MAP_GROWSUP 0x0200 /* register stack-like segment */
> > > >
> > > > #ifdef __KERNEL__
> > > > #ifndef __ASSEMBLY__
> > >
> > > ia64 doesn't use MAP_GROWSUP, so it's probably not necessary to carry it
> > > along with your cleanup.
> >
> > ia64 is the only architecture defining it, nobody uses it in the kernel.
> > If the ia64 maintainers want to remove it in a separate patch, that
> > would probably be a good idea.
> >
>
> I'll do it then.
>
> > I tried not to change the ABI in any way in my patch, and there is
> > a theoretical possibility that some user space program on ia64 currently
> > depends on that definition.
> >
>
> I don't buy that as justification, if some userspace program uses it based
> on the false belief that it actually does what it says, it's probably
> better to break their build than perpetuating the lie that it's different
> than ~MAP_GROWSDOWN.
>
>
> ia64: remove definition for MAP_GROWSUP
>
> MAP_GROWSUP is unused.

Is it perhaps the case that some UNIX on ia64 does implement MAP_GROWSUP,
and these numbers in the Linux ia64 mman.h have been chosen to match that
reference implementation? Tony will know. But I wonder if you'd do
better at least to leave a MAP_GROWSUP comment on that line, so that
somebody doesn't go and reuse the empty slot later on.

Hugh

>
> Signed-off-by: David Rientjes <rientjes@google.com>
> ---
> diff --git a/arch/ia64/include/asm/mman.h b/arch/ia64/include/asm/mman.h
> --- a/arch/ia64/include/asm/mman.h
> +++ b/arch/ia64/include/asm/mman.h
> @@ -11,7 +11,6 @@
> #include <asm-generic/mman-common.h>
>
> #define MAP_GROWSDOWN 0x00100 /* stack-like segment */
> -#define MAP_GROWSUP 0x00200 /* register stack-like segment */
> #define MAP_DENYWRITE 0x00800 /* ETXTBSY */
> #define MAP_EXECUTABLE 0x01000 /* mark it as an executable */
> #define MAP_LOCKED 0x02000 /* pages are locked */