| From a0615a16f7d0ceb5804d295203c302d496d8ee91 Mon Sep 17 00:00:00 2001 |
| From: Reza Arbab <arbab@linux.vnet.ibm.com> |
| Date: Wed, 25 Jan 2017 09:54:33 -0600 |
| Subject: powerpc/mm: Use the correct pointer when setting a 2MB pte |
| |
| From: Reza Arbab <arbab@linux.vnet.ibm.com> |
| |
| commit a0615a16f7d0ceb5804d295203c302d496d8ee91 upstream. |
| |
| When setting a 2MB pte, radix__map_kernel_page() is using the address |
| |
| ptep = (pte_t *)pudp; |
| |
| Fix this conversion to use pmdp instead. Use pmdp_ptep() to do this |
| instead of casting the pointer. |
| |
| Fixes: 2bfd65e45e87 ("powerpc/mm/radix: Add radix callbacks for early init routines") |
| Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> |
| Signed-off-by: Reza Arbab <arbab@linux.vnet.ibm.com> |
| Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/powerpc/mm/pgtable-radix.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/arch/powerpc/mm/pgtable-radix.c |
| +++ b/arch/powerpc/mm/pgtable-radix.c |
| @@ -65,7 +65,7 @@ int radix__map_kernel_page(unsigned long |
| if (!pmdp) |
| return -ENOMEM; |
| if (map_page_size == PMD_SIZE) { |
| - ptep = (pte_t *)pudp; |
| + ptep = pmdp_ptep(pmdp); |
| goto set_the_pte; |
| } |
| ptep = pte_alloc_kernel(pmdp, ea); |
| @@ -90,7 +90,7 @@ int radix__map_kernel_page(unsigned long |
| } |
| pmdp = pmd_offset(pudp, ea); |
| if (map_page_size == PMD_SIZE) { |
| - ptep = (pte_t *)pudp; |
| + ptep = pmdp_ptep(pmdp); |
| goto set_the_pte; |
| } |
| if (!pmd_present(*pmdp)) { |