summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuriy Kolerov <yuriy.kolerov@synopsys.com>2016-11-28 07:07:17 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-12-08 07:16:17 +0100
commitb43fb9f6f162ac4bff8cfe836b19a28439291bae (patch)
tree69784d24ba36fce6ef455d600657be2d3bb8a454
parent8d1ee7b245ef50b497f1f1f57b74cae3285accf2 (diff)
downloadlinux-b43fb9f6f162ac4bff8cfe836b19a28439291bae.tar.gz
linux-b43fb9f6f162ac4bff8cfe836b19a28439291bae.tar.bz2
linux-b43fb9f6f162ac4bff8cfe836b19a28439291bae.zip
ARC: mm: PAE40: Fix crash at munmap
commit 6a8b2ca702b279bea0e8f0363056439352e2081c upstream. commit 1c3c90930392 broke PAE40. Macro pfn_pte(pfn, prot) creates paddr from pfn, but the page shift was getting truncated to 32 bits since we lost the proper cast to 64 bits (for PAE400 Instead of reverting that commit, use a better helper which is 32/64 bits safe just like ARM implementation. Fixes: 1c3c90930392 ("ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS") Signed-off-by: Yuriy Kolerov <yuriy.kolerov@synopsys.com> [vgupta: massaged changelog] Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--arch/arc/include/asm/pgtable.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h
index 89eeb3720051..e94ca72b974e 100644
--- a/arch/arc/include/asm/pgtable.h
+++ b/arch/arc/include/asm/pgtable.h
@@ -280,7 +280,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep)
#define pte_page(pte) pfn_to_page(pte_pfn(pte))
#define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot)
-#define pfn_pte(pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
+#define pfn_pte(pfn, prot) __pte(__pfn_to_phys(pfn) | pgprot_val(prot))
/* Don't use virt_to_pfn for macros below: could cause truncations for PAE40*/
#define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT)