linux_dsm_epyc7002/arch
Ralph Campbell 92c77f7c4d x86/mm: Don't exceed the valid physical address space
valid_phys_addr_range() is used to sanity check the physical address range
of an operation, e.g., access to /dev/mem. It uses __pa(high_memory)
internally.

If memory is populated at the end of the physical address space, then
__pa(high_memory) is outside of the physical address space because:

   high_memory = (void *)__va(max_pfn * PAGE_SIZE - 1) + 1;

For the comparison in valid_phys_addr_range() this is not an issue, but if
CONFIG_DEBUG_VIRTUAL is enabled, __pa() maps to __phys_addr(), which
verifies that the resulting physical address is within the valid physical
address space of the CPU. So in the case that memory is populated at the
end of the physical address space, this is not true and triggers a
VIRTUAL_BUG_ON().

Use __pa(high_memory - 1) to prevent the conversion from going beyond
the end of valid physical addresses.

Fixes: be62a32044 ("x86/mm: Limit mmap() of /dev/mem to valid physical addresses")
Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Craig Bergstrom <craigb@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: Fengguang Wu <fengguang.wu@intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Hans Verkuil <hans.verkuil@cisco.com>
Cc: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sander Eikelenboom <linux@eikelenboom.it>
Cc: Sean Young <sean@mess.org>

Link: https://lkml.kernel.org/r/20190326001817.15413-2-rcampbell@nvidia.com
2019-03-28 14:13:51 +01:00
..
alpha Kbuild updates for v5.1 (2nd) 2019-03-17 13:25:26 -07:00
arc ARC updates for 5.1-rc2 2019-03-20 11:01:52 -07:00
arm irqchip updates for 5.1, take #2 2019-03-21 12:30:54 +01:00
arm64 arm64: remove obsolete selection of MULTI_IRQ_HANDLER 2019-03-20 17:34:16 +00:00
c6x kbuild: force all architectures except um to include mandatory-y 2019-03-17 12:56:32 +09:00
csky kbuild: force all architectures except um to include mandatory-y 2019-03-17 12:56:32 +09:00
h8300 kbuild: force all architectures except um to include mandatory-y 2019-03-17 12:56:32 +09:00
hexagon kbuild: force all architectures except um to include mandatory-y 2019-03-17 12:56:32 +09:00
ia64 Kbuild updates for v5.1 (2nd) 2019-03-17 13:25:26 -07:00
m68k kbuild: force all architectures except um to include mandatory-y 2019-03-17 12:56:32 +09:00
microblaze Kbuild updates for v5.1 (2nd) 2019-03-17 13:25:26 -07:00
mips A small batch of MIPS fixes for 5.1: 2019-03-19 10:50:15 -07:00
nds32 kbuild: force all architectures except um to include mandatory-y 2019-03-17 12:56:32 +09:00
nios2 kbuild: force all architectures except um to include mandatory-y 2019-03-17 12:56:32 +09:00
openrisc kbuild: force all architectures except um to include mandatory-y 2019-03-17 12:56:32 +09:00
parisc Kbuild updates for v5.1 (2nd) 2019-03-17 13:25:26 -07:00
powerpc powerpc/security: Fix spectre_v2 reporting 2019-03-21 21:09:03 +11:00
riscv kbuild: force all architectures except um to include mandatory-y 2019-03-17 12:56:32 +09:00
s390 Kbuild updates for v5.1 (2nd) 2019-03-17 13:25:26 -07:00
sh kbuild: force all architectures except um to include mandatory-y 2019-03-17 12:56:32 +09:00
sparc Kbuild updates for v5.1 (2nd) 2019-03-17 13:25:26 -07:00
um Merge branch 'for-linus-5.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml 2019-03-15 15:07:32 -07:00
unicore32 kbuild: force all architectures except um to include mandatory-y 2019-03-17 12:56:32 +09:00
x86 x86/mm: Don't exceed the valid physical address space 2019-03-28 14:13:51 +01:00
xtensa kbuild: force all architectures except um to include mandatory-y 2019-03-17 12:56:32 +09:00
.gitignore
Kconfig Char/Misc driver patches for 5.1-rc1 2019-03-06 14:18:59 -08:00