powerpc/mm/hash: Check for non-kernel address in get_kernel_vsid()
authorMichael Ellerman <mpe@ellerman.id.au>
Wed, 29 Mar 2017 12:10:34 +0000 (23:10 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 31 Mar 2017 12:09:59 +0000 (23:09 +1100)
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 <mpe@ellerman.id.au>
arch/powerpc/include/asm/book3s/64/mmu-hash.h

index a5ab6f5b8a7f81bc35a2dd209d9b607d50e68407..10a34282829e0452eac0722f30e2c06b7516ef45 100644 (file)
@@ -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: