diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-05-22 09:00:23 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-05-22 09:00:23 +0200 |
commit | 6acf116c9558314d3cac36d5eb17f30368c73fd2 (patch) | |
tree | 385d0f4811ca8e0bf2deed3d58516b7e97054242 /arch/powerpc/include/asm/page.h | |
parent | 5fcf93795e6b72368cd98cd541b6d4bbe8804320 (diff) | |
parent | 08332893e37af6ae779367e78e444f8f9571511d (diff) | |
download | linux-6acf116c9558314d3cac36d5eb17f30368c73fd2.tar.gz linux-6acf116c9558314d3cac36d5eb17f30368c73fd2.tar.bz2 linux-6acf116c9558314d3cac36d5eb17f30368c73fd2.zip |
Merge 4.12-rc2 into usb-next
We want the USB fixes in here as well to handle testing and merge
issues.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/powerpc/include/asm/page.h')
-rw-r--r-- | arch/powerpc/include/asm/page.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h index 2a32483c7b6c..8da5d4c1cab2 100644 --- a/arch/powerpc/include/asm/page.h +++ b/arch/powerpc/include/asm/page.h @@ -132,7 +132,19 @@ extern long long virt_phys_offset; #define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT) #define virt_to_page(kaddr) pfn_to_page(virt_to_pfn(kaddr)) #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) + +#ifdef CONFIG_PPC_BOOK3S_64 +/* + * On hash the vmalloc and other regions alias to the kernel region when passed + * through __pa(), which virt_to_pfn() uses. That means virt_addr_valid() can + * return true for some vmalloc addresses, which is incorrect. So explicitly + * check that the address is in the kernel region. + */ +#define virt_addr_valid(kaddr) (REGION_ID(kaddr) == KERNEL_REGION_ID && \ + pfn_valid(virt_to_pfn(kaddr))) +#else #define virt_addr_valid(kaddr) pfn_valid(virt_to_pfn(kaddr)) +#endif /* * On Book-E parts we need __va to parse the device tree and we can't |