All of lore.kernel.org
 help / color / mirror / Atom feed
From: torvalds@transmeta.com (Linus Torvalds)
To: linux-kernel@vger.kernel.org
Subject: Re: do_mmap
Date: Fri, 31 May 2002 17:30:39 +0000 (UTC)	[thread overview]
Message-ID: <ad8bvv$3tr$1@penguin.transmeta.com> (raw)
In-Reply-To: <Pine.GSO.4.05.10205311456070.10633-100000@mausmaki.cosy.sbg.ac.at> <1022855243.12888.410.camel@irongate.swansea.linux.org.uk>

In article <1022855243.12888.410.camel@irongate.swansea.linux.org.uk>,
Alan Cox  <alan@lxorguk.ukuu.org.uk> 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.

The fact is, if you use something like vm86 mode, you absolutely _need_
to be able to explicitly mmap at address 0. 

So it is correct (and in fact there is no other sane way to do it) to
say

	addr = mmap(NULL, 1024*1024,
		PROT_READ | PROT_WRITE ,
		MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED,
		-1, 0);

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.

In short, under Linux 0 _is_, and will always be (at least on x86) a
perfectly valid return address from mmap() and friends. It's only going
to be returned when you explicitly ask for it with MAP_FIXED, but it
absolutely is a valid return.

		Linus
		Linus

  parent reply	other threads:[~2002-05-31 17:31 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-05-31 13:00 do_mmap Thomas 'Dent' Mirlacher
2002-05-31 14:27 ` do_mmap Alan Cox
2002-05-31 13:33   ` do_mmap Thomas 'Dent' Mirlacher
2002-05-31 17:30   ` Linus Torvalds [this message]
2002-05-31 17:46     ` do_mmap Thomas 'Dent' Mirlacher
2002-05-31 17:56       ` do_mmap Linus Torvalds
2002-05-31 18:10       ` do_mmap Richard B. Johnson
2002-05-31 18:21         ` do_mmap Thomas 'Dent' Mirlacher
2002-05-31 18:38           ` do_mmap Richard B. Johnson
2002-05-31 18:59     ` do_mmap Alan Cox
2002-06-01 11:12     ` do_mmap Kai Henningsen
2002-05-31 19:49   ` do_mmap DervishD
2002-05-31 19:46 ` do_mmap DervishD
2002-06-03 12:19 ` do_mmap Pavel Machek
2002-06-03 19:13   ` do_mmap Thomas 'Dent' Mirlacher
2002-06-03 20:11   ` do_mmap Thomas 'Dent' Mirlacher
2002-06-03 20:25     ` do_mmap Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='ad8bvv$3tr$1@penguin.transmeta.com' \
    --to=torvalds@transmeta.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.