diff options
author | Yuriy Kolerov <yuriy.kolerov@synopsys.com> | 2016-11-28 07:07:17 +0300 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2016-11-29 09:12:08 -0800 |
commit | 6a8b2ca702b279bea0e8f0363056439352e2081c (patch) | |
tree | 1311d6adefa5978e394b4adb898f09f55b455a86 /arch/arc | |
parent | 23cb1f644019bac49d87b4dd7c1eac0569cc4f53 (diff) | |
download | linux-stable-6a8b2ca702b279bea0e8f0363056439352e2081c.tar.gz linux-stable-6a8b2ca702b279bea0e8f0363056439352e2081c.tar.bz2 linux-stable-6a8b2ca702b279bea0e8f0363056439352e2081c.zip |
ARC: mm: PAE40: Fix crash at munmap
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")
Cc: <stable@vger.kernel.org> #4.4+
Signed-off-by: Yuriy Kolerov <yuriy.kolerov@synopsys.com>
[vgupta: massaged changelog]
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc')
-rw-r--r-- | arch/arc/include/asm/pgtable.h | 2 |
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) |