Re: [PATCH AUTOSEL 4.19 47/64] arm64: ptdump: Don't iterate kernel page tables using PTRS_PER_PXX

From: Sasha Levin
Date: Mon Mar 11 2019 - 13:16:23 EST


On Thu, Feb 28, 2019 at 03:18:22PM +0000, Will Deacon wrote:
On Thu, Feb 28, 2019 at 10:10:48AM -0500, Sasha Levin wrote:
From: Will Deacon <will.deacon@xxxxxxx>

[ Upstream commit d23c808c6fc6132e812690648e14c0d6b0cbe273 ]

When 52-bit virtual addressing is enabled for userspace
(CONFIG_ARM64_USER_VA_BITS_52=y), the kernel continues to utilise 48-bit
virtual addressing in TTBR1. Consequently, PTRS_PER_PGD reflects the
larger page table size for userspace and the pgd pointer for kernel page
tables is offset before being written to TTBR1.

This means that we can't use PTRS_PER_PGD to iterate over kernel page
tables unless we apply the same offset, which is fiddly to get right and
leads to some non-idiomatic walking code. Instead, just follow the usual
pattern when walking page tables by using a while loop driven by
pXd_offset() and pXd_addr_end().

Reported-by: Qian Cai <cai@xxxxxx>
Tested-by: Qian Cai <cai@xxxxxx>
Acked-by: Steve Capper <steve.capper@xxxxxxx>
Tested-by: Steve Capper <steve.capper@xxxxxxx>
Signed-off-by: Will Deacon <will.deacon@xxxxxxx>
Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
---
arch/arm64/mm/dump.c | 59 ++++++++++++++++++++++----------------------
1 file changed, 29 insertions(+), 30 deletions(-)

This isn't needed for any released kernels. In future, is there a tag I can
use to prevent a patch from being picked up by the AUTOSEL bot? That way you
can distinguish "I forgot to cc stable" from "I deliberately didn't cc
stable".

I've dropped it, thanks!

Generally the bot will look into a Fixes: tag, and if the commit pointed
to it is not in the tree then the patch won't be picked up.

--
Thanks,
Sasha