Re: don't let mmap allocate down to zero

From: Mikael Pettersson
Date: Thu Jan 27 2005 - 04:30:48 EST


William Lee Irwin III writes:
> On Wed, Jan 26, 2005 at 11:18:08AM -0500, Rik van Riel wrote:
> >> With some programs the 2.6 kernel can end up allocating memory
> >> at address zero, for a non-MAP_FIXED mmap call! This causes
> >> problems with some programs and is generally rude to do. This
> >> simple patch fixes the problem in my tests.
> >> Make sure that we don't allocate memory all the way down to zero,
> >> so the NULL pointer never gets covered up with anonymous memory
> >> and we don't end up violating the C standard.
> >> Signed-off-by: Rik van Riel <riel@xxxxxxxxxx>
>
> On Wed, Jan 26, 2005 at 09:25:38AM -0800, William Lee Irwin III wrote:
> > SHLIB_BASE does not appear to be present in 2.6.9; perhaps something
> > else is going on.
> > I think we are better off:
> > (a) checking for hitting zero explicitly as opposed to
> > enforcing a randomly-chosen lower limit for addresses
> > (b) enforcing vma allocation above FIRST_USER_PGD_NR*PGDIR_SIZE,
> > to which SHLIB_BASE bears no relation.
>
> There's a long discussion here, in which no one appears to have noticed
> that SHLIB_BASE does not exist in mainline. Is anyone else awake here?

About the only kernel-level enforcement I would feel comfortable with is
to have non-fixed mmap()s refuse to grab the _page_ at address 0. Any range
larger than this is policy, and hence needs a user-space override mechanism.

Also, if user-space wants to catch accesses in a larger region above 0 then
it can do that itself, by checking the result of mmap(), or by doing a fixed
mmap() at address 0 with suitable size and rwx protection disabled.

/Mikael
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/