]> git.baikalelectronics.ru Git - kernel.git/commit
arch/ia64: Restore arch-specific pgd_offset_k implementation
authorJessica Clarke <jrtc27@jrtc27.com>
Tue, 11 Aug 2020 18:24:57 +0000 (19:24 +0100)
committerMike Rapoport <rppt@linux.ibm.com>
Mon, 17 Aug 2020 18:50:54 +0000 (21:50 +0300)
commit21a8ff78a12fb3236d2a964801cf4dda58d47f16
tree3fe1105c202525965c492ca880e3417f9e3b152b
parente5f0bf958198ed018c9fdf06e8d307ced9af9c95
arch/ia64: Restore arch-specific pgd_offset_k implementation

IA-64 is special and treats pgd_offset_k() differently to pgd_offset(),
using different formulae to calculate the indices into the kernel and user
PGDs.  The index into the user PGDs takes into account the region number,
but the index into the kernel (init_mm) PGD always assumes a predefined
kernel region number. Commit c80f5fc1c03c ("mm: consolidate pte_index() and
pte_offset_*() definitions") made IA-64 use a generic pgd_offset_k() which
incorrectly used pgd_index() for kernel page tables.  As a result, the
index into the kernel PGD was going out of bounds and the kernel hung
during early boot.

Allow overrides of pgd_offset_k() and override it on IA-64 with the old
implementation that will correctly index the kernel PGD.

Fixes: c80f5fc1c03c ("mm: consolidate pte_index() and pte_offset_*() definitions")
Reported-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Acked-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
arch/ia64/include/asm/pgtable.h
include/linux/pgtable.h