linux_dsm_epyc7002/arch/x86/mm
Kees Cook a4866aa812 mm: Tighten x86 /dev/mem with zeroing reads
Under CONFIG_STRICT_DEVMEM, reading System RAM through /dev/mem is
disallowed. However, on x86, the first 1MB was always allowed for BIOS
and similar things, regardless of it actually being System RAM. It was
possible for heap to end up getting allocated in low 1MB RAM, and then
read by things like x86info or dd, which would trip hardened usercopy:

usercopy: kernel memory exposure attempt detected from ffff880000090000 (dma-kmalloc-256) (4096 bytes)

This changes the x86 exception for the low 1MB by reading back zeros for
System RAM areas instead of blindly allowing them. More work is needed to
extend this to mmap, but currently mmap doesn't go through usercopy, so
hardened usercopy won't Oops the kernel.

Reported-by: Tommi Rantala <tommi.t.rantala@nokia.com>
Tested-by: Tommi Rantala <tommi.t.rantala@nokia.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
2017-04-12 11:40:23 -07:00
..
kmemcheck
amdtopology.c
debug_pagetables.c
dump_pagetables.c x86/mm/ptdump: Add address marker for KASAN shadow region 2017-02-16 19:53:25 +01:00
extable.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/debug.h> 2017-03-02 08:42:34 +01:00
fault.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task_stack.h> 2017-03-02 08:42:36 +01:00
gup.c x86, mm: unify exit paths in gup_pte_range() 2017-03-09 17:01:09 -08:00
highmem_32.c
hugetlbpage.c sched/headers: Prepare for new header dependencies before moving more code to <linux/sched/mm.h> 2017-03-02 08:42:30 +01:00
ident_map.c
init_32.c mm: add arch-independent testcases for RODATA 2017-02-27 18:43:48 -08:00
init_64.c mm: add arch-independent testcases for RODATA 2017-02-27 18:43:48 -08:00
init.c mm: Tighten x86 /dev/mem with zeroing reads 2017-04-12 11:40:23 -07:00
iomap_32.c
ioremap.c
kasan_init_64.c x86/kasan: Fix boot with KASAN=y and PROFILE_ANNOTATED_BRANCHES=y 2017-03-14 00:00:55 +01:00
kaslr.c x86/mm/KASLR: Exclude EFI region from KASLR VA space randomization 2017-03-24 09:04:27 +01:00
kmmio.c
Makefile
mm_internal.h
mmap.c sched/headers: Prepare for new header dependencies before moving more code to <linux/sched/mm.h> 2017-03-02 08:42:30 +01:00
mmio-mod.c
mpx.c x86/mpx: Make unnecessarily global function static 2017-03-16 09:17:05 +01:00
numa_32.c
numa_64.c
numa_emulation.c
numa_internal.h
numa.c ACPI/NUMA: Do not map pxm to node when NUMA is turned off 2016-12-15 11:32:32 +01:00
pageattr-test.c
pageattr.c x86/mm/cpa: Avoid wbinvd() for PREEMPT 2017-01-30 15:33:52 +01:00
pat_internal.h
pat_rbtree.c x86/mm/pat: Use rb_entry() 2017-02-04 17:18:00 +01:00
pat.c x86/pat, mm: Make track_pfn_insert() return void 2016-11-09 21:36:07 +01:00
pf_in.c
pf_in.h
pgtable_32.c
pgtable.c mm, x86: add support for PUD-sized transparent hugepages 2017-02-24 17:46:54 -08:00
physaddr.c
physaddr.h
pkeys.c x86/fpu: Finish excising 'eagerfpu' 2016-10-18 09:56:03 +02:00
setup_nx.c
srat.c
testmmiotrace.c
tlb.c x86/mm/64: Enable vmapped stacks (CONFIG_HAVE_ARCH_VMAP_STACK=y) 2016-08-24 12:11:42 +02:00