diff options
Diffstat (limited to 'arch/sparc64/mm')
-rw-r--r-- | arch/sparc64/mm/hugetlbpage.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/sparc64/mm/hugetlbpage.c b/arch/sparc64/mm/hugetlbpage.c index 074620d413d4..fbbbebbad8a4 100644 --- a/arch/sparc64/mm/hugetlbpage.c +++ b/arch/sparc64/mm/hugetlbpage.c | |||
@@ -198,6 +198,13 @@ pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr) | |||
198 | pmd_t *pmd; | 198 | pmd_t *pmd; |
199 | pte_t *pte = NULL; | 199 | pte_t *pte = NULL; |
200 | 200 | ||
201 | /* We must align the address, because our caller will run | ||
202 | * set_huge_pte_at() on whatever we return, which writes out | ||
203 | * all of the sub-ptes for the hugepage range. So we have | ||
204 | * to give it the first such sub-pte. | ||
205 | */ | ||
206 | addr &= HPAGE_MASK; | ||
207 | |||
201 | pgd = pgd_offset(mm, addr); | 208 | pgd = pgd_offset(mm, addr); |
202 | pud = pud_alloc(mm, pgd, addr); | 209 | pud = pud_alloc(mm, pgd, addr); |
203 | if (pud) { | 210 | if (pud) { |