From: Michael Ellerman Date: Wed, 29 Mar 2017 12:10:34 +0000 (+1100) Subject: powerpc/mm/hash: Check for non-kernel address in get_kernel_vsid() X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=85beb1c486df76a7a851a0e063785282c2608f37;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git powerpc/mm/hash: Check for non-kernel address in get_kernel_vsid() get_kernel_vsid() has a very stern comment saying that it's only valid for kernel addresses, but there's nothing in the code to enforce that. Rather than hoping our callers are well behaved, add a check and return a VSID of 0 (invalid). Signed-off-by: Michael Ellerman --- diff --git a/arch/powerpc/include/asm/book3s/64/mmu-hash.h b/arch/powerpc/include/asm/book3s/64/mmu-hash.h index a5ab6f5b8a7f..10a34282829e 100644 --- a/arch/powerpc/include/asm/book3s/64/mmu-hash.h +++ b/arch/powerpc/include/asm/book3s/64/mmu-hash.h @@ -682,6 +682,9 @@ static inline unsigned long get_kernel_vsid(unsigned long ea, int ssize) { unsigned long context; + if (!is_kernel_addr(ea)) + return 0; + /* * For kernel space, we use context ids 1-4 to map the address space as * below: