2002-06-01 11:28:14

by kaih

[permalink] [raw]
Subject: Re: do_mmap

[email protected] (Linus Torvalds) wrote on 31.05.02 in <[email protected]>:

> In article <[email protected]>,
> Alan Cox <[email protected]> wrote:
> >On Fri, 2002-05-31 at 14:00, Thomas 'Dent' Mirlacher wrote:
> >> and the checks in various places are really strange. - well some
> >> places check for:
> >> o != NULL
> >> o > -1024UL
> >
> >"Not an error". Its relying as some other bits of code do actually that
> >the top mappable user address is never in the top 1K of the address
> >space
> >
> >> is it possible to have 0 as a valid address? - if not, this should
> >> be the return on errors.
> >
> >SuS explicitly says that 0 is not a valid mmap return address.
>
> But if so, SuS is _very_ _very_ wrong.

[...]

> and if SuS says that mmap must not return NULL for this case, then SuS
> is so full of sh*t that it's not worth worrying about.

Actually, at least SuSv3 does not say any such thing. *What* it says is
that the return is either MAP_FAILED or the correct address, and that if
it is called *without* MAP_FIXED, then the argument 0 has special meaning,
and it won't map something at 0 (and thus return 0) - which, AFAICT, is
exactly what we want it to say. Specifically, NULL is *never* an error
return value for mmap.

At least, unless we define MAP_FAILED to be NULL - traditionally, it's
(void *)-1 probably exactly so it is possible to return an address of 0.

See <http://www.opengroup.org/onlinepubs/007904975/functions/mmap.html>.

MfG Kai