linux/arch
Nicholas Piggin 56fc6cb5d5 powerpc/64s/radix: Fix huge vmap false positive
commit 467ba14e16 upstream.

pmd_huge() is defined to false when HUGETLB_PAGE is not configured, but
the vmap code still installs huge PMDs. This leads to false bad PMD
errors when vunmapping because it is not seen as a huge PTE, and the bad
PMD check catches it. The end result may not be much more serious than
some bad pmd warning messages, because the pmd_none_or_clear_bad() does
what we wanted and clears the huge PTE anyway.

Fix this by checking pmd_is_leaf(), which checks for a PTE regardless of
config options. The whole huge/large/leaf stuff is a tangled mess but
that's kernel-wide and not something we can improve much in arch/powerpc
code.

pmd_page(), pud_page(), etc., called by vmalloc_to_page() on huge vmaps
can similarly trigger a false VM_BUG_ON when CONFIG_HUGETLB_PAGE=n, so
those checks are adjusted. The checks were added by commit d6eacedd1f
("powerpc/book3s: Use config independent helpers for page table walk"),
while implementing a similar fix for other page table walking functions.

Fixes: d909f9109c ("powerpc/64s/radix: Enable HAVE_ARCH_HUGE_VMAP")
Cc: stable@vger.kernel.org # v5.3+
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20211216103342.609192-1-npiggin@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-01-27 11:05:12 +01:00
..
alpha
arc
arm ARM: dts: qcom: sdx55: fix IPA interconnect definitions 2022-01-27 11:04:39 +01:00
arm64 arm64: tegra: Adjust length of CCPLEX cluster MMIO region 2022-01-27 11:04:43 +01:00
csky perf: Protect perf_guest_cbs with RCU 2022-01-20 09:13:14 +01:00
h8300
hexagon
ia64
m68k
microblaze
mips MIPS: Octeon: Fix build errors using clang 2022-01-27 11:05:03 +01:00
nds32 perf: Protect perf_guest_cbs with RCU 2022-01-20 09:13:14 +01:00
nios2
openrisc openrisc: Add clone3 ABI wrapper 2022-01-27 11:04:10 +01:00
parisc parisc: Fix lpa and lpa_user defines 2022-01-27 11:05:12 +01:00
powerpc powerpc/64s/radix: Fix huge vmap false positive 2022-01-27 11:05:12 +01:00
riscv riscv: mm: fix wrong phys_ram_base value for RV64 2022-01-27 11:02:50 +01:00
s390 s390/mm: fix 2KB pgtable release race 2022-01-27 11:05:10 +01:00
sh
sparc
um um: registers: Rename function names to avoid conflicts and build problems 2022-01-27 11:04:48 +01:00
x86 x86/kbuild: Enable CONFIG_KALLSYMS_ALL=y in the defconfigs 2022-01-27 11:04:56 +01:00
xtensa
.gitignore
Kconfig