arm64: Fix kcore macros after 52-bit virtual addressing fallout
authorChris von Recklinghausen <crecklin@redhat.com>
Thu, 10 Oct 2019 17:22:47 +0000 (13:22 -0400)
committerWill Deacon <will@kernel.org>
Fri, 11 Oct 2019 16:36:46 +0000 (17:36 +0100)
commit86109a691a454e08cbe0356400268cb2a81f1997
tree6f23762bd0cbdf01d75640f27eb435cbf8ad82fa
parent3e7c93bd04edfb0cae7dad1215544c9350254b8f
arm64: Fix kcore macros after 52-bit virtual addressing fallout

We export the entire kernel address space (i.e. the whole of the TTBR1
address range) via /proc/kcore. The kc_vaddr_to_offset() and
kc_offset_to_vaddr() macros are intended to convert between a kernel
virtual address and its offset relative to the start of the TTBR1
address space.

Prior to commit:

  14c127c957c1c607 ("arm64: mm: Flip kernel VA space")

... the offset was calculated relative to VA_START, which at the time
was the start of the TTBR1 address space. At this time, PAGE_OFFSET
pointed to the high half of the TTBR1 address space where arm64's
linear map lived.

That commit swapped the position of VA_START and PAGE_OFFSET, but
failed to update kc_vaddr_to_offset() or kc_offset_to_vaddr(), so
since then the two macros behave incorrectly.

Note that VA_START was subsequently renamed to PAGE_END in commit:

  77ad4ce69321abbe ("arm64: memory: rename VA_START to PAGE_END")

As the generic implementations of the two macros calculate the offset
relative to PAGE_OFFSET (which is now the start of the TTBR1 address
space), we can delete the arm64 implementation and use those.

Fixes: 14c127c957c1c607 ("arm64: mm: Flip kernel VA space")
Reviewed-by: James Morse <james.morse@arm.com>
Reviewed-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Chris von Recklinghausen <crecklin@redhat.com>
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/include/asm/pgtable.h