@@ -118,21 +118,20 @@ static noinline int gup_huge_pmd(pmd_t pmd, unsigned long addr,
118
118
unsigned long end , int write , struct page * * pages , int * nr )
119
119
{
120
120
unsigned long mask ;
121
- pte_t pte = * (pte_t * )& pmd ;
122
121
struct page * head , * page ;
123
122
int refs ;
124
123
125
124
mask = _PAGE_PRESENT |_PAGE_USER ;
126
125
if (write )
127
126
mask |= _PAGE_RW ;
128
- if ((pte_flags ( pte ) & mask ) != mask )
127
+ if ((pmd_flags ( pmd ) & mask ) != mask )
129
128
return 0 ;
130
129
/* hugepages are never "special" */
131
- VM_BUG_ON (pte_flags ( pte ) & _PAGE_SPECIAL );
132
- VM_BUG_ON (!pfn_valid (pte_pfn ( pte )));
130
+ VM_BUG_ON (pmd_flags ( pmd ) & _PAGE_SPECIAL );
131
+ VM_BUG_ON (!pfn_valid (pmd_pfn ( pmd )));
133
132
134
133
refs = 0 ;
135
- head = pte_page ( pte );
134
+ head = pmd_page ( pmd );
136
135
page = head + ((addr & ~PMD_MASK ) >> PAGE_SHIFT );
137
136
do {
138
137
VM_BUG_ON_PAGE (compound_head (page ) != head , page );
@@ -195,21 +194,20 @@ static noinline int gup_huge_pud(pud_t pud, unsigned long addr,
195
194
unsigned long end , int write , struct page * * pages , int * nr )
196
195
{
197
196
unsigned long mask ;
198
- pte_t pte = * (pte_t * )& pud ;
199
197
struct page * head , * page ;
200
198
int refs ;
201
199
202
200
mask = _PAGE_PRESENT |_PAGE_USER ;
203
201
if (write )
204
202
mask |= _PAGE_RW ;
205
- if ((pte_flags ( pte ) & mask ) != mask )
203
+ if ((pud_flags ( pud ) & mask ) != mask )
206
204
return 0 ;
207
205
/* hugepages are never "special" */
208
- VM_BUG_ON (pte_flags ( pte ) & _PAGE_SPECIAL );
209
- VM_BUG_ON (!pfn_valid (pte_pfn ( pte )));
206
+ VM_BUG_ON (pud_flags ( pud ) & _PAGE_SPECIAL );
207
+ VM_BUG_ON (!pfn_valid (pud_pfn ( pud )));
210
208
211
209
refs = 0 ;
212
- head = pte_page ( pte );
210
+ head = pud_page ( pud );
213
211
page = head + ((addr & ~PUD_MASK ) >> PAGE_SHIFT );
214
212
do {
215
213
VM_BUG_ON_PAGE (compound_head (page ) != head , page );
0 commit comments