diff options
Diffstat (limited to 'arch/powerpc/mm/gup.c')
-rw-r--r-- | arch/powerpc/mm/gup.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/arch/powerpc/mm/gup.c b/arch/powerpc/mm/gup.c index d7efdbf640c7..4b921affa495 100644 --- a/arch/powerpc/mm/gup.c +++ b/arch/powerpc/mm/gup.c | |||
@@ -68,7 +68,11 @@ static int gup_pmd_range(pud_t pud, unsigned long addr, unsigned long end, | |||
68 | next = pmd_addr_end(addr, end); | 68 | next = pmd_addr_end(addr, end); |
69 | if (pmd_none(pmd)) | 69 | if (pmd_none(pmd)) |
70 | return 0; | 70 | return 0; |
71 | if (is_hugepd(pmdp)) { | 71 | if (pmd_huge(pmd)) { |
72 | if (!gup_hugepte((pte_t *)pmdp, PMD_SIZE, addr, next, | ||
73 | write, pages, nr)) | ||
74 | return 0; | ||
75 | } else if (is_hugepd(pmdp)) { | ||
72 | if (!gup_hugepd((hugepd_t *)pmdp, PMD_SHIFT, | 76 | if (!gup_hugepd((hugepd_t *)pmdp, PMD_SHIFT, |
73 | addr, next, write, pages, nr)) | 77 | addr, next, write, pages, nr)) |
74 | return 0; | 78 | return 0; |
@@ -92,7 +96,11 @@ static int gup_pud_range(pgd_t pgd, unsigned long addr, unsigned long end, | |||
92 | next = pud_addr_end(addr, end); | 96 | next = pud_addr_end(addr, end); |
93 | if (pud_none(pud)) | 97 | if (pud_none(pud)) |
94 | return 0; | 98 | return 0; |
95 | if (is_hugepd(pudp)) { | 99 | if (pud_huge(pud)) { |
100 | if (!gup_hugepte((pte_t *)pudp, PUD_SIZE, addr, next, | ||
101 | write, pages, nr)) | ||
102 | return 0; | ||
103 | } else if (is_hugepd(pudp)) { | ||
96 | if (!gup_hugepd((hugepd_t *)pudp, PUD_SHIFT, | 104 | if (!gup_hugepd((hugepd_t *)pudp, PUD_SHIFT, |
97 | addr, next, write, pages, nr)) | 105 | addr, next, write, pages, nr)) |
98 | return 0; | 106 | return 0; |
@@ -153,7 +161,11 @@ int get_user_pages_fast(unsigned long start, int nr_pages, int write, | |||
153 | next = pgd_addr_end(addr, end); | 161 | next = pgd_addr_end(addr, end); |
154 | if (pgd_none(pgd)) | 162 | if (pgd_none(pgd)) |
155 | goto slow; | 163 | goto slow; |
156 | if (is_hugepd(pgdp)) { | 164 | if (pgd_huge(pgd)) { |
165 | if (!gup_hugepte((pte_t *)pgdp, PGDIR_SIZE, addr, next, | ||
166 | write, pages, &nr)) | ||
167 | goto slow; | ||
168 | } else if (is_hugepd(pgdp)) { | ||
157 | if (!gup_hugepd((hugepd_t *)pgdp, PGDIR_SHIFT, | 169 | if (!gup_hugepd((hugepd_t *)pgdp, PGDIR_SHIFT, |
158 | addr, next, write, pages, &nr)) | 170 | addr, next, write, pages, &nr)) |
159 | goto slow; | 171 | goto slow; |