linux_dsm_epyc7002/arch/x86/mm
Laurent Dufour a3c4fb7c9c x86/mm: Fix fault error path using unsafe vma pointer
commit 7b2d0dbac4 ("x86/mm/pkeys: Pass VMA down in to fault signal
generation code") passes down a vma pointer to the error path, but that is
done once the mmap_sem is released when calling mm_fault_error() from
__do_page_fault().

This is dangerous as the vma structure is no more safe to be used once the
mmap_sem has been released. As only the protection key value is required in
the error processing, we could just pass down this value.

Fix it by passing a pointer to a protection key value down to the fault
signal generation code. The use of a pointer allows to keep the check
generating a warning message in fill_sig_info_pkey() when the vma was not
known. If the pointer is valid, the protection value can be accessed by
deferencing the pointer.

[ tglx: Made *pkey u32 as that's the type which is passed in siginfo ]

Fixes: 7b2d0dbac4 ("x86/mm/pkeys: Pass VMA down in to fault signal generation code")
Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-mm@kvack.org
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: stable@vger.kernel.org
Link: http://lkml.kernel.org/r/1504513935-12742-1-git-send-email-ldufour@linux.vnet.ibm.com
2017-09-25 09:36:15 +02:00
..
kmemcheck
amdtopology.c
debug_pagetables.c
dump_pagetables.c x86/mm/dump_pagetables: Speed up page tables dump for CONFIG_KASAN=y 2017-07-25 11:22:09 +02:00
extable.c Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-09-04 11:52:29 -07:00
fault.c x86/mm: Fix fault error path using unsafe vma pointer 2017-09-25 09:36:15 +02:00
highmem_32.c
hugetlbpage.c x86/mm: Prepare to expose larger address space to userspace 2017-07-21 10:05:18 +02:00
ident_map.c x86/mm, kexec: Allow kexec to be used with SME 2017-07-18 11:38:04 +02:00
init_32.c mm, memory_hotplug: replace for_device by want_memblock in arch_add_memory 2017-07-06 16:24:32 -07:00
init_64.c mm/memory_hotplug: introduce add_pages 2017-09-08 18:26:46 -07:00
init.c x86/mm/64: Initialize CR4.PCIDE early 2017-09-13 09:54:43 +02:00
iomap_32.c
ioremap.c x86/mm: Use proper encryption attributes with /dev/mem 2017-07-18 11:38:05 +02:00
kasan_init_64.c x86/mm: Insure that boot memory areas are mapped properly 2017-07-18 11:38:01 +02:00
kaslr.c x86/mm: Add support for 5-level paging for KASLR 2017-06-13 08:56:58 +02:00
kmmio.c
Makefile x86/mm: Add support to encrypt the kernel in-place 2017-07-18 11:38:05 +02:00
mem_encrypt_boot.S x86/mm: Fix SME encryption stack ptr handling 2017-08-29 10:57:16 +02:00
mem_encrypt.c x86/mm: Make the SME mask a u64 2017-09-07 11:53:11 +02:00
mm_internal.h
mmap.c Merge branch 'linus' into x86/mm to pick up fixes and to fix conflicts 2017-08-26 09:19:13 +02:00
mmio-mod.c
mpx.c x86/mpx: Do not allow MPX if we have mappings above 47-bit 2017-07-21 10:05:18 +02:00
numa_32.c
numa_64.c
numa_emulation.c x86/numa_emulation: Recalculate numa_nodes_parsed from emulated nodes 2017-07-18 11:16:49 +02:00
numa_internal.h
numa.c
pageattr-test.c
pageattr.c x86, drm, fbdev: Do not specify encrypted memory for video mappings 2017-07-18 11:38:04 +02:00
pat_internal.h
pat_rbtree.c
pat.c x86/mm: Use proper encryption attributes with /dev/mem 2017-07-18 11:38:05 +02:00
pf_in.c
pf_in.h
pgtable_32.c
pgtable.c x86/paravirt: Remove no longer used paravirt functions 2017-09-13 10:55:15 +02:00
physaddr.c
physaddr.h
pkeys.c
setup_nx.c
srat.c
testmmiotrace.c
tlb.c x86/mm: Factor out CR3-building code 2017-09-17 18:59:08 +02:00