kern: mmap: make the lowest mmap address MiB; mmap ld.so at MiB
authorRonald G. Minnich <rminnich@google.com>
Wed, 30 Jul 2014 19:37:38 +0000 (19:37 +0000)
committerRonald G. Minnich <rminnich@google.com>
Wed, 30 Jul 2014 19:37:38 +0000 (19:37 +0000)
commit526266cda499272430b3370832d4fee8c4efc2d2
tree9697c84fab5a353b8709def68591fe61b6c6bdf1
parent9842461138ad8cb0caccf47e41d915e2ff93aadb
kern: mmap: make the lowest mmap address MiB; mmap ld.so at MiB

We spent a day debugging a bad pointer that was the wrong bad pointer;
it was actually a data corruption of a null pointer that changed it to
ff00, which was valid memory since we load ld.so at 4k. As it turns out,
it's easier nowadays to get a deref via a NULL pointer struct to not take a fault
if you have anything mapped at anything less than 1M; structs are big.

Map ld.so at MiB; don't allow mappings lower than MiB. This doesn't fix
the go runtime problem, but it would have let us find the issue
several days earlier. And, since this is a common issue, might as well
avoid it in this instance.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
kern/include/mm.h
kern/src/elf.c