sparc32: use PUD rather than PGD to get PMD in srmmu_inherit_prom_mappings()
authorMike Rapoport <rppt@linux.ibm.com>
Sat, 27 Jun 2020 08:16:52 +0000 (11:16 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 22 Jul 2020 01:25:59 +0000 (18:25 -0700)
This is a misprint in the page table traversal in
srmmu_inherit_prom_mappings`() function which accessed a PMD entry using
PGD rather than PUD.

Since sparc32 has only 3 page table levels, the PGD and PUD are
essentially the same and usage of __nocache_fix() removed the type
checking.

Use PUD for the consistency and to avoid breakage because of upcoming
addition of type checking into __nocache_fix().

Fixes: 7235db268a2777bc38 ("sparc32: use pgtable-nopud instead of 4level-fixup")
Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/mm/srmmu.c

index 0070f8b9a753a942cf332cb8450573e1daac23b4..f5fa07958f340c475ab9f6fbd65d93b7b9aa2b9d 100644 (file)
@@ -822,7 +822,7 @@ static void __init srmmu_inherit_prom_mappings(unsigned long start,
                        memset(__nocache_fix(pmdp), 0, SRMMU_PMD_TABLE_SIZE);
                        pud_set(__nocache_fix(pudp), pmdp);
                }
-               pmdp = pmd_offset(__nocache_fix(pgdp), start);
+               pmdp = pmd_offset(__nocache_fix(pudp), start);
                if (what == 1) {
                        *(pmd_t *)__nocache_fix(pmdp) = __pmd(probed);
                        start += PMD_SIZE;