[BUG] get_unmapped_area() change -> non booting machine

From: Benjamin Herrenschmidt
Date: Mon Feb 09 2004 - 22:48:31 EST


Hi !

I've finally found what is causing my box not to boot any more
with recent 2.6.3-rc* bk's.

Andi change to get_unmapped_area() is triggering that interesting
scenario:

- bash tries to load
- ld.so tries to map libc somewhere below the executable at a
location provided by the prelink informations. However, probably due to
outdated prelink informations (I didn't re-run prelink since I updated
glibc), it won't fit.
- Andi change cause do_mmap() to actually do a search of a free
space from the address... when ends up beeing right after the brk point
of the just loaded bash
- something (glibc) is now mapped right after brk point of bash,
preventing it from malloc'ing, so it dies.

Just reverting the patch fixes it. Though, the patch do make sense in
some cases, paulus suggested to modify the code so that for a non
MAP_FIXED map, it still search from the passed-in address, but avoids
the spare between the current mm->brk and TASK_UNMAPPED_BASE, thus the
algorithm would still work for things outside of these areas.

Commment ?

(Sorry, no patch at this point, still recovering the box and deep
into another bug...)

Ben.


-
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/