Why is the highest page in memory on x86 (0xfffff000-0xffffffff) readable by user applications? Is there any way to make the following code generate a SIGSEGV using mprotect, mmap, etc?
#include <stdio.h>
int main(int argc, char **argv)
{
printf("%d\n", *(int *) 0xfffffffc);
}