Hmm. Thinking more about this, we do allow access to the first 1MB of
physical memory unconditionally (see devmem_is_allowed() in
arch/x86/mm/init.c). And I think we only _reserve_ the first 64kB or
something. So I guess even STRICT_DEVMEM isn't actually all that
strict.
So this should be visible even *with* STRICT_DEVMEM.
Does a simple
sudo dd if=/dev/mem of=/dev/null bs=4096 count=256
also show the same issue? Maybe regardless of STRICT_DEVMEM?
Maybe we should change devmem_is_allowed() to return a ternary value,
and then have it be "allow access" (for reserved pages), "disallow
access" (for various random stuff), and "just read zero" (for pages in
the low 1M that aren't marked reserved).
That way things like that read the low 1M (like x86info) will
hopefully not be unhappy, but also won't be reading random kernel
data.
Linus