net/sonic: Prevent tx watchdog timeout
[platform/kernel/linux-rpi.git] / mm / gup.c
1 #include <linux/kernel.h>
2 #include <linux/errno.h>
3 #include <linux/err.h>
4 #include <linux/spinlock.h>
5
6 #include <linux/mm.h>
7 #include <linux/memremap.h>
8 #include <linux/pagemap.h>
9 #include <linux/rmap.h>
10 #include <linux/swap.h>
11 #include <linux/swapops.h>
12
13 #include <linux/sched/signal.h>
14 #include <linux/rwsem.h>
15 #include <linux/hugetlb.h>
16
17 #include <asm/mmu_context.h>
18 #include <asm/pgtable.h>
19 #include <asm/tlbflush.h>
20
21 #include "internal.h"
22
23 static struct page *no_page_table(struct vm_area_struct *vma,
24                 unsigned int flags)
25 {
26         /*
27          * When core dumping an enormous anonymous area that nobody
28          * has touched so far, we don't want to allocate unnecessary pages or
29          * page tables.  Return error instead of NULL to skip handle_mm_fault,
30          * then get_dump_page() will return NULL to leave a hole in the dump.
31          * But we can only make this optimization where a hole would surely
32          * be zero-filled if handle_mm_fault() actually did handle it.
33          */
34         if ((flags & FOLL_DUMP) && (!vma->vm_ops || !vma->vm_ops->fault))
35                 return ERR_PTR(-EFAULT);
36         return NULL;
37 }
38
39 static int follow_pfn_pte(struct vm_area_struct *vma, unsigned long address,
40                 pte_t *pte, unsigned int flags)
41 {
42         /* No page to get reference */
43         if (flags & FOLL_GET)
44                 return -EFAULT;
45
46         if (flags & FOLL_TOUCH) {
47                 pte_t entry = *pte;
48
49                 if (flags & FOLL_WRITE)
50                         entry = pte_mkdirty(entry);
51                 entry = pte_mkyoung(entry);
52
53                 if (!pte_same(*pte, entry)) {
54                         set_pte_at(vma->vm_mm, address, pte, entry);
55                         update_mmu_cache(vma, address, pte);
56                 }
57         }
58
59         /* Proper page table entry exists, but no corresponding struct page */
60         return -EEXIST;
61 }
62
63 /*
64  * FOLL_FORCE can write to even unwritable pte's, but only
65  * after we've gone through a COW cycle and they are dirty.
66  */
67 static inline bool can_follow_write_pte(pte_t pte, unsigned int flags)
68 {
69         return pte_write(pte) ||
70                 ((flags & FOLL_FORCE) && (flags & FOLL_COW) && pte_dirty(pte));
71 }
72
73 static struct page *follow_page_pte(struct vm_area_struct *vma,
74                 unsigned long address, pmd_t *pmd, unsigned int flags)
75 {
76         struct mm_struct *mm = vma->vm_mm;
77         struct dev_pagemap *pgmap = NULL;
78         struct page *page;
79         spinlock_t *ptl;
80         pte_t *ptep, pte;
81
82 retry:
83         if (unlikely(pmd_bad(*pmd)))
84                 return no_page_table(vma, flags);
85
86         ptep = pte_offset_map_lock(mm, pmd, address, &ptl);
87         pte = *ptep;
88         if (!pte_present(pte)) {
89                 swp_entry_t entry;
90                 /*
91                  * KSM's break_ksm() relies upon recognizing a ksm page
92                  * even while it is being migrated, so for that case we
93                  * need migration_entry_wait().
94                  */
95                 if (likely(!(flags & FOLL_MIGRATION)))
96                         goto no_page;
97                 if (pte_none(pte))
98                         goto no_page;
99                 entry = pte_to_swp_entry(pte);
100                 if (!is_migration_entry(entry))
101                         goto no_page;
102                 pte_unmap_unlock(ptep, ptl);
103                 migration_entry_wait(mm, pmd, address);
104                 goto retry;
105         }
106         if ((flags & FOLL_NUMA) && pte_protnone(pte))
107                 goto no_page;
108         if ((flags & FOLL_WRITE) && !can_follow_write_pte(pte, flags)) {
109                 pte_unmap_unlock(ptep, ptl);
110                 return NULL;
111         }
112
113         page = vm_normal_page(vma, address, pte);
114         if (!page && pte_devmap(pte) && (flags & FOLL_GET)) {
115                 /*
116                  * Only return device mapping pages in the FOLL_GET case since
117                  * they are only valid while holding the pgmap reference.
118                  */
119                 pgmap = get_dev_pagemap(pte_pfn(pte), NULL);
120                 if (pgmap)
121                         page = pte_page(pte);
122                 else
123                         goto no_page;
124         } else if (unlikely(!page)) {
125                 if (flags & FOLL_DUMP) {
126                         /* Avoid special (like zero) pages in core dumps */
127                         page = ERR_PTR(-EFAULT);
128                         goto out;
129                 }
130
131                 if (is_zero_pfn(pte_pfn(pte))) {
132                         page = pte_page(pte);
133                 } else {
134                         int ret;
135
136                         ret = follow_pfn_pte(vma, address, ptep, flags);
137                         page = ERR_PTR(ret);
138                         goto out;
139                 }
140         }
141
142         if (flags & FOLL_SPLIT && PageTransCompound(page)) {
143                 int ret;
144                 get_page(page);
145                 pte_unmap_unlock(ptep, ptl);
146                 lock_page(page);
147                 ret = split_huge_page(page);
148                 unlock_page(page);
149                 put_page(page);
150                 if (ret)
151                         return ERR_PTR(ret);
152                 goto retry;
153         }
154
155         if (flags & FOLL_GET) {
156                 if (unlikely(!try_get_page(page))) {
157                         page = ERR_PTR(-ENOMEM);
158                         goto out;
159                 }
160
161                 /* drop the pgmap reference now that we hold the page */
162                 if (pgmap) {
163                         put_dev_pagemap(pgmap);
164                         pgmap = NULL;
165                 }
166         }
167         if (flags & FOLL_TOUCH) {
168                 if ((flags & FOLL_WRITE) &&
169                     !pte_dirty(pte) && !PageDirty(page))
170                         set_page_dirty(page);
171                 /*
172                  * pte_mkyoung() would be more correct here, but atomic care
173                  * is needed to avoid losing the dirty bit: it is easier to use
174                  * mark_page_accessed().
175                  */
176                 mark_page_accessed(page);
177         }
178         if ((flags & FOLL_MLOCK) && (vma->vm_flags & VM_LOCKED)) {
179                 /* Do not mlock pte-mapped THP */
180                 if (PageTransCompound(page))
181                         goto out;
182
183                 /*
184                  * The preliminary mapping check is mainly to avoid the
185                  * pointless overhead of lock_page on the ZERO_PAGE
186                  * which might bounce very badly if there is contention.
187                  *
188                  * If the page is already locked, we don't need to
189                  * handle it now - vmscan will handle it later if and
190                  * when it attempts to reclaim the page.
191                  */
192                 if (page->mapping && trylock_page(page)) {
193                         lru_add_drain();  /* push cached pages to LRU */
194                         /*
195                          * Because we lock page here, and migration is
196                          * blocked by the pte's page reference, and we
197                          * know the page is still mapped, we don't even
198                          * need to check for file-cache page truncation.
199                          */
200                         mlock_vma_page(page);
201                         unlock_page(page);
202                 }
203         }
204 out:
205         pte_unmap_unlock(ptep, ptl);
206         return page;
207 no_page:
208         pte_unmap_unlock(ptep, ptl);
209         if (!pte_none(pte))
210                 return NULL;
211         return no_page_table(vma, flags);
212 }
213
214 static struct page *follow_pmd_mask(struct vm_area_struct *vma,
215                                     unsigned long address, pud_t *pudp,
216                                     unsigned int flags, unsigned int *page_mask)
217 {
218         pmd_t *pmd, pmdval;
219         spinlock_t *ptl;
220         struct page *page;
221         struct mm_struct *mm = vma->vm_mm;
222
223         pmd = pmd_offset(pudp, address);
224         /*
225          * The READ_ONCE() will stabilize the pmdval in a register or
226          * on the stack so that it will stop changing under the code.
227          */
228         pmdval = READ_ONCE(*pmd);
229         if (pmd_none(pmdval))
230                 return no_page_table(vma, flags);
231         if (pmd_huge(pmdval) && vma->vm_flags & VM_HUGETLB) {
232                 page = follow_huge_pmd(mm, address, pmd, flags);
233                 if (page)
234                         return page;
235                 return no_page_table(vma, flags);
236         }
237         if (is_hugepd(__hugepd(pmd_val(pmdval)))) {
238                 page = follow_huge_pd(vma, address,
239                                       __hugepd(pmd_val(pmdval)), flags,
240                                       PMD_SHIFT);
241                 if (page)
242                         return page;
243                 return no_page_table(vma, flags);
244         }
245 retry:
246         if (!pmd_present(pmdval)) {
247                 if (likely(!(flags & FOLL_MIGRATION)))
248                         return no_page_table(vma, flags);
249                 VM_BUG_ON(thp_migration_supported() &&
250                                   !is_pmd_migration_entry(pmdval));
251                 if (is_pmd_migration_entry(pmdval))
252                         pmd_migration_entry_wait(mm, pmd);
253                 pmdval = READ_ONCE(*pmd);
254                 /*
255                  * MADV_DONTNEED may convert the pmd to null because
256                  * mmap_sem is held in read mode
257                  */
258                 if (pmd_none(pmdval))
259                         return no_page_table(vma, flags);
260                 goto retry;
261         }
262         if (pmd_devmap(pmdval)) {
263                 ptl = pmd_lock(mm, pmd);
264                 page = follow_devmap_pmd(vma, address, pmd, flags);
265                 spin_unlock(ptl);
266                 if (page)
267                         return page;
268         }
269         if (likely(!pmd_trans_huge(pmdval)))
270                 return follow_page_pte(vma, address, pmd, flags);
271
272         if ((flags & FOLL_NUMA) && pmd_protnone(pmdval))
273                 return no_page_table(vma, flags);
274
275 retry_locked:
276         ptl = pmd_lock(mm, pmd);
277         if (unlikely(pmd_none(*pmd))) {
278                 spin_unlock(ptl);
279                 return no_page_table(vma, flags);
280         }
281         if (unlikely(!pmd_present(*pmd))) {
282                 spin_unlock(ptl);
283                 if (likely(!(flags & FOLL_MIGRATION)))
284                         return no_page_table(vma, flags);
285                 pmd_migration_entry_wait(mm, pmd);
286                 goto retry_locked;
287         }
288         if (unlikely(!pmd_trans_huge(*pmd))) {
289                 spin_unlock(ptl);
290                 return follow_page_pte(vma, address, pmd, flags);
291         }
292         if (flags & FOLL_SPLIT) {
293                 int ret;
294                 page = pmd_page(*pmd);
295                 if (is_huge_zero_page(page)) {
296                         spin_unlock(ptl);
297                         ret = 0;
298                         split_huge_pmd(vma, pmd, address);
299                         if (pmd_trans_unstable(pmd))
300                                 ret = -EBUSY;
301                 } else {
302                         if (unlikely(!try_get_page(page))) {
303                                 spin_unlock(ptl);
304                                 return ERR_PTR(-ENOMEM);
305                         }
306                         spin_unlock(ptl);
307                         lock_page(page);
308                         ret = split_huge_page(page);
309                         unlock_page(page);
310                         put_page(page);
311                         if (pmd_none(*pmd))
312                                 return no_page_table(vma, flags);
313                 }
314
315                 return ret ? ERR_PTR(ret) :
316                         follow_page_pte(vma, address, pmd, flags);
317         }
318         page = follow_trans_huge_pmd(vma, address, pmd, flags);
319         spin_unlock(ptl);
320         *page_mask = HPAGE_PMD_NR - 1;
321         return page;
322 }
323
324
325 static struct page *follow_pud_mask(struct vm_area_struct *vma,
326                                     unsigned long address, p4d_t *p4dp,
327                                     unsigned int flags, unsigned int *page_mask)
328 {
329         pud_t *pud;
330         spinlock_t *ptl;
331         struct page *page;
332         struct mm_struct *mm = vma->vm_mm;
333
334         pud = pud_offset(p4dp, address);
335         if (pud_none(*pud))
336                 return no_page_table(vma, flags);
337         if (pud_huge(*pud) && vma->vm_flags & VM_HUGETLB) {
338                 page = follow_huge_pud(mm, address, pud, flags);
339                 if (page)
340                         return page;
341                 return no_page_table(vma, flags);
342         }
343         if (is_hugepd(__hugepd(pud_val(*pud)))) {
344                 page = follow_huge_pd(vma, address,
345                                       __hugepd(pud_val(*pud)), flags,
346                                       PUD_SHIFT);
347                 if (page)
348                         return page;
349                 return no_page_table(vma, flags);
350         }
351         if (pud_devmap(*pud)) {
352                 ptl = pud_lock(mm, pud);
353                 page = follow_devmap_pud(vma, address, pud, flags);
354                 spin_unlock(ptl);
355                 if (page)
356                         return page;
357         }
358         if (unlikely(pud_bad(*pud)))
359                 return no_page_table(vma, flags);
360
361         return follow_pmd_mask(vma, address, pud, flags, page_mask);
362 }
363
364
365 static struct page *follow_p4d_mask(struct vm_area_struct *vma,
366                                     unsigned long address, pgd_t *pgdp,
367                                     unsigned int flags, unsigned int *page_mask)
368 {
369         p4d_t *p4d;
370         struct page *page;
371
372         p4d = p4d_offset(pgdp, address);
373         if (p4d_none(*p4d))
374                 return no_page_table(vma, flags);
375         BUILD_BUG_ON(p4d_huge(*p4d));
376         if (unlikely(p4d_bad(*p4d)))
377                 return no_page_table(vma, flags);
378
379         if (is_hugepd(__hugepd(p4d_val(*p4d)))) {
380                 page = follow_huge_pd(vma, address,
381                                       __hugepd(p4d_val(*p4d)), flags,
382                                       P4D_SHIFT);
383                 if (page)
384                         return page;
385                 return no_page_table(vma, flags);
386         }
387         return follow_pud_mask(vma, address, p4d, flags, page_mask);
388 }
389
390 /**
391  * follow_page_mask - look up a page descriptor from a user-virtual address
392  * @vma: vm_area_struct mapping @address
393  * @address: virtual address to look up
394  * @flags: flags modifying lookup behaviour
395  * @page_mask: on output, *page_mask is set according to the size of the page
396  *
397  * @flags can have FOLL_ flags set, defined in <linux/mm.h>
398  *
399  * Returns the mapped (struct page *), %NULL if no mapping exists, or
400  * an error pointer if there is a mapping to something not represented
401  * by a page descriptor (see also vm_normal_page()).
402  */
403 struct page *follow_page_mask(struct vm_area_struct *vma,
404                               unsigned long address, unsigned int flags,
405                               unsigned int *page_mask)
406 {
407         pgd_t *pgd;
408         struct page *page;
409         struct mm_struct *mm = vma->vm_mm;
410
411         *page_mask = 0;
412
413         /* make this handle hugepd */
414         page = follow_huge_addr(mm, address, flags & FOLL_WRITE);
415         if (!IS_ERR(page)) {
416                 BUG_ON(flags & FOLL_GET);
417                 return page;
418         }
419
420         pgd = pgd_offset(mm, address);
421
422         if (pgd_none(*pgd) || unlikely(pgd_bad(*pgd)))
423                 return no_page_table(vma, flags);
424
425         if (pgd_huge(*pgd)) {
426                 page = follow_huge_pgd(mm, address, pgd, flags);
427                 if (page)
428                         return page;
429                 return no_page_table(vma, flags);
430         }
431         if (is_hugepd(__hugepd(pgd_val(*pgd)))) {
432                 page = follow_huge_pd(vma, address,
433                                       __hugepd(pgd_val(*pgd)), flags,
434                                       PGDIR_SHIFT);
435                 if (page)
436                         return page;
437                 return no_page_table(vma, flags);
438         }
439
440         return follow_p4d_mask(vma, address, pgd, flags, page_mask);
441 }
442
443 static int get_gate_page(struct mm_struct *mm, unsigned long address,
444                 unsigned int gup_flags, struct vm_area_struct **vma,
445                 struct page **page)
446 {
447         pgd_t *pgd;
448         p4d_t *p4d;
449         pud_t *pud;
450         pmd_t *pmd;
451         pte_t *pte;
452         int ret = -EFAULT;
453
454         /* user gate pages are read-only */
455         if (gup_flags & FOLL_WRITE)
456                 return -EFAULT;
457         if (address > TASK_SIZE)
458                 pgd = pgd_offset_k(address);
459         else
460                 pgd = pgd_offset_gate(mm, address);
461         if (pgd_none(*pgd))
462                 return -EFAULT;
463         p4d = p4d_offset(pgd, address);
464         if (p4d_none(*p4d))
465                 return -EFAULT;
466         pud = pud_offset(p4d, address);
467         if (pud_none(*pud))
468                 return -EFAULT;
469         pmd = pmd_offset(pud, address);
470         if (!pmd_present(*pmd))
471                 return -EFAULT;
472         VM_BUG_ON(pmd_trans_huge(*pmd));
473         pte = pte_offset_map(pmd, address);
474         if (pte_none(*pte))
475                 goto unmap;
476         *vma = get_gate_vma(mm);
477         if (!page)
478                 goto out;
479         *page = vm_normal_page(*vma, address, *pte);
480         if (!*page) {
481                 if ((gup_flags & FOLL_DUMP) || !is_zero_pfn(pte_pfn(*pte)))
482                         goto unmap;
483                 *page = pte_page(*pte);
484
485                 /*
486                  * This should never happen (a device public page in the gate
487                  * area).
488                  */
489                 if (is_device_public_page(*page))
490                         goto unmap;
491         }
492         if (unlikely(!try_get_page(*page))) {
493                 ret = -ENOMEM;
494                 goto unmap;
495         }
496 out:
497         ret = 0;
498 unmap:
499         pte_unmap(pte);
500         return ret;
501 }
502
503 /*
504  * mmap_sem must be held on entry.  If @nonblocking != NULL and
505  * *@flags does not include FOLL_NOWAIT, the mmap_sem may be released.
506  * If it is, *@nonblocking will be set to 0 and -EBUSY returned.
507  */
508 static int faultin_page(struct task_struct *tsk, struct vm_area_struct *vma,
509                 unsigned long address, unsigned int *flags, int *nonblocking)
510 {
511         unsigned int fault_flags = 0;
512         vm_fault_t ret;
513
514         /* mlock all present pages, but do not fault in new pages */
515         if ((*flags & (FOLL_POPULATE | FOLL_MLOCK)) == FOLL_MLOCK)
516                 return -ENOENT;
517         if (*flags & FOLL_WRITE)
518                 fault_flags |= FAULT_FLAG_WRITE;
519         if (*flags & FOLL_REMOTE)
520                 fault_flags |= FAULT_FLAG_REMOTE;
521         if (nonblocking)
522                 fault_flags |= FAULT_FLAG_ALLOW_RETRY;
523         if (*flags & FOLL_NOWAIT)
524                 fault_flags |= FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_RETRY_NOWAIT;
525         if (*flags & FOLL_TRIED) {
526                 VM_WARN_ON_ONCE(fault_flags & FAULT_FLAG_ALLOW_RETRY);
527                 fault_flags |= FAULT_FLAG_TRIED;
528         }
529
530         ret = handle_mm_fault(vma, address, fault_flags);
531         if (ret & VM_FAULT_ERROR) {
532                 int err = vm_fault_to_errno(ret, *flags);
533
534                 if (err)
535                         return err;
536                 BUG();
537         }
538
539         if (tsk) {
540                 if (ret & VM_FAULT_MAJOR)
541                         tsk->maj_flt++;
542                 else
543                         tsk->min_flt++;
544         }
545
546         if (ret & VM_FAULT_RETRY) {
547                 if (nonblocking && !(fault_flags & FAULT_FLAG_RETRY_NOWAIT))
548                         *nonblocking = 0;
549                 return -EBUSY;
550         }
551
552         /*
553          * The VM_FAULT_WRITE bit tells us that do_wp_page has broken COW when
554          * necessary, even if maybe_mkwrite decided not to set pte_write. We
555          * can thus safely do subsequent page lookups as if they were reads.
556          * But only do so when looping for pte_write is futile: in some cases
557          * userspace may also be wanting to write to the gotten user page,
558          * which a read fault here might prevent (a readonly page might get
559          * reCOWed by userspace write).
560          */
561         if ((ret & VM_FAULT_WRITE) && !(vma->vm_flags & VM_WRITE))
562                 *flags |= FOLL_COW;
563         return 0;
564 }
565
566 static int check_vma_flags(struct vm_area_struct *vma, unsigned long gup_flags)
567 {
568         vm_flags_t vm_flags = vma->vm_flags;
569         int write = (gup_flags & FOLL_WRITE);
570         int foreign = (gup_flags & FOLL_REMOTE);
571
572         if (vm_flags & (VM_IO | VM_PFNMAP))
573                 return -EFAULT;
574
575         if (gup_flags & FOLL_ANON && !vma_is_anonymous(vma))
576                 return -EFAULT;
577
578         if (write) {
579                 if (!(vm_flags & VM_WRITE)) {
580                         if (!(gup_flags & FOLL_FORCE))
581                                 return -EFAULT;
582                         /*
583                          * We used to let the write,force case do COW in a
584                          * VM_MAYWRITE VM_SHARED !VM_WRITE vma, so ptrace could
585                          * set a breakpoint in a read-only mapping of an
586                          * executable, without corrupting the file (yet only
587                          * when that file had been opened for writing!).
588                          * Anon pages in shared mappings are surprising: now
589                          * just reject it.
590                          */
591                         if (!is_cow_mapping(vm_flags))
592                                 return -EFAULT;
593                 }
594         } else if (!(vm_flags & VM_READ)) {
595                 if (!(gup_flags & FOLL_FORCE))
596                         return -EFAULT;
597                 /*
598                  * Is there actually any vma we can reach here which does not
599                  * have VM_MAYREAD set?
600                  */
601                 if (!(vm_flags & VM_MAYREAD))
602                         return -EFAULT;
603         }
604         /*
605          * gups are always data accesses, not instruction
606          * fetches, so execute=false here
607          */
608         if (!arch_vma_access_permitted(vma, write, false, foreign))
609                 return -EFAULT;
610         return 0;
611 }
612
613 /**
614  * __get_user_pages() - pin user pages in memory
615  * @tsk:        task_struct of target task
616  * @mm:         mm_struct of target mm
617  * @start:      starting user address
618  * @nr_pages:   number of pages from start to pin
619  * @gup_flags:  flags modifying pin behaviour
620  * @pages:      array that receives pointers to the pages pinned.
621  *              Should be at least nr_pages long. Or NULL, if caller
622  *              only intends to ensure the pages are faulted in.
623  * @vmas:       array of pointers to vmas corresponding to each page.
624  *              Or NULL if the caller does not require them.
625  * @nonblocking: whether waiting for disk IO or mmap_sem contention
626  *
627  * Returns number of pages pinned. This may be fewer than the number
628  * requested. If nr_pages is 0 or negative, returns 0. If no pages
629  * were pinned, returns -errno. Each page returned must be released
630  * with a put_page() call when it is finished with. vmas will only
631  * remain valid while mmap_sem is held.
632  *
633  * Must be called with mmap_sem held.  It may be released.  See below.
634  *
635  * __get_user_pages walks a process's page tables and takes a reference to
636  * each struct page that each user address corresponds to at a given
637  * instant. That is, it takes the page that would be accessed if a user
638  * thread accesses the given user virtual address at that instant.
639  *
640  * This does not guarantee that the page exists in the user mappings when
641  * __get_user_pages returns, and there may even be a completely different
642  * page there in some cases (eg. if mmapped pagecache has been invalidated
643  * and subsequently re faulted). However it does guarantee that the page
644  * won't be freed completely. And mostly callers simply care that the page
645  * contains data that was valid *at some point in time*. Typically, an IO
646  * or similar operation cannot guarantee anything stronger anyway because
647  * locks can't be held over the syscall boundary.
648  *
649  * If @gup_flags & FOLL_WRITE == 0, the page must not be written to. If
650  * the page is written to, set_page_dirty (or set_page_dirty_lock, as
651  * appropriate) must be called after the page is finished with, and
652  * before put_page is called.
653  *
654  * If @nonblocking != NULL, __get_user_pages will not wait for disk IO
655  * or mmap_sem contention, and if waiting is needed to pin all pages,
656  * *@nonblocking will be set to 0.  Further, if @gup_flags does not
657  * include FOLL_NOWAIT, the mmap_sem will be released via up_read() in
658  * this case.
659  *
660  * A caller using such a combination of @nonblocking and @gup_flags
661  * must therefore hold the mmap_sem for reading only, and recognize
662  * when it's been released.  Otherwise, it must be held for either
663  * reading or writing and will not be released.
664  *
665  * In most cases, get_user_pages or get_user_pages_fast should be used
666  * instead of __get_user_pages. __get_user_pages should be used only if
667  * you need some special @gup_flags.
668  */
669 static long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
670                 unsigned long start, unsigned long nr_pages,
671                 unsigned int gup_flags, struct page **pages,
672                 struct vm_area_struct **vmas, int *nonblocking)
673 {
674         long i = 0;
675         unsigned int page_mask;
676         struct vm_area_struct *vma = NULL;
677
678         if (!nr_pages)
679                 return 0;
680
681         VM_BUG_ON(!!pages != !!(gup_flags & FOLL_GET));
682
683         /*
684          * If FOLL_FORCE is set then do not force a full fault as the hinting
685          * fault information is unrelated to the reference behaviour of a task
686          * using the address space
687          */
688         if (!(gup_flags & FOLL_FORCE))
689                 gup_flags |= FOLL_NUMA;
690
691         do {
692                 struct page *page;
693                 unsigned int foll_flags = gup_flags;
694                 unsigned int page_increm;
695
696                 /* first iteration or cross vma bound */
697                 if (!vma || start >= vma->vm_end) {
698                         vma = find_extend_vma(mm, start);
699                         if (!vma && in_gate_area(mm, start)) {
700                                 int ret;
701                                 ret = get_gate_page(mm, start & PAGE_MASK,
702                                                 gup_flags, &vma,
703                                                 pages ? &pages[i] : NULL);
704                                 if (ret)
705                                         return i ? : ret;
706                                 page_mask = 0;
707                                 goto next_page;
708                         }
709
710                         if (!vma || check_vma_flags(vma, gup_flags))
711                                 return i ? : -EFAULT;
712                         if (is_vm_hugetlb_page(vma)) {
713                                 i = follow_hugetlb_page(mm, vma, pages, vmas,
714                                                 &start, &nr_pages, i,
715                                                 gup_flags, nonblocking);
716                                 continue;
717                         }
718                 }
719 retry:
720                 /*
721                  * If we have a pending SIGKILL, don't keep faulting pages and
722                  * potentially allocating memory.
723                  */
724                 if (unlikely(fatal_signal_pending(current)))
725                         return i ? i : -ERESTARTSYS;
726                 cond_resched();
727                 page = follow_page_mask(vma, start, foll_flags, &page_mask);
728                 if (!page) {
729                         int ret;
730                         ret = faultin_page(tsk, vma, start, &foll_flags,
731                                         nonblocking);
732                         switch (ret) {
733                         case 0:
734                                 goto retry;
735                         case -EFAULT:
736                         case -ENOMEM:
737                         case -EHWPOISON:
738                                 return i ? i : ret;
739                         case -EBUSY:
740                                 return i;
741                         case -ENOENT:
742                                 goto next_page;
743                         }
744                         BUG();
745                 } else if (PTR_ERR(page) == -EEXIST) {
746                         /*
747                          * Proper page table entry exists, but no corresponding
748                          * struct page.
749                          */
750                         goto next_page;
751                 } else if (IS_ERR(page)) {
752                         return i ? i : PTR_ERR(page);
753                 }
754                 if (pages) {
755                         pages[i] = page;
756                         flush_anon_page(vma, page, start);
757                         flush_dcache_page(page);
758                         page_mask = 0;
759                 }
760 next_page:
761                 if (vmas) {
762                         vmas[i] = vma;
763                         page_mask = 0;
764                 }
765                 page_increm = 1 + (~(start >> PAGE_SHIFT) & page_mask);
766                 if (page_increm > nr_pages)
767                         page_increm = nr_pages;
768                 i += page_increm;
769                 start += page_increm * PAGE_SIZE;
770                 nr_pages -= page_increm;
771         } while (nr_pages);
772         return i;
773 }
774
775 static bool vma_permits_fault(struct vm_area_struct *vma,
776                               unsigned int fault_flags)
777 {
778         bool write   = !!(fault_flags & FAULT_FLAG_WRITE);
779         bool foreign = !!(fault_flags & FAULT_FLAG_REMOTE);
780         vm_flags_t vm_flags = write ? VM_WRITE : VM_READ;
781
782         if (!(vm_flags & vma->vm_flags))
783                 return false;
784
785         /*
786          * The architecture might have a hardware protection
787          * mechanism other than read/write that can deny access.
788          *
789          * gup always represents data access, not instruction
790          * fetches, so execute=false here:
791          */
792         if (!arch_vma_access_permitted(vma, write, false, foreign))
793                 return false;
794
795         return true;
796 }
797
798 /*
799  * fixup_user_fault() - manually resolve a user page fault
800  * @tsk:        the task_struct to use for page fault accounting, or
801  *              NULL if faults are not to be recorded.
802  * @mm:         mm_struct of target mm
803  * @address:    user address
804  * @fault_flags:flags to pass down to handle_mm_fault()
805  * @unlocked:   did we unlock the mmap_sem while retrying, maybe NULL if caller
806  *              does not allow retry
807  *
808  * This is meant to be called in the specific scenario where for locking reasons
809  * we try to access user memory in atomic context (within a pagefault_disable()
810  * section), this returns -EFAULT, and we want to resolve the user fault before
811  * trying again.
812  *
813  * Typically this is meant to be used by the futex code.
814  *
815  * The main difference with get_user_pages() is that this function will
816  * unconditionally call handle_mm_fault() which will in turn perform all the
817  * necessary SW fixup of the dirty and young bits in the PTE, while
818  * get_user_pages() only guarantees to update these in the struct page.
819  *
820  * This is important for some architectures where those bits also gate the
821  * access permission to the page because they are maintained in software.  On
822  * such architectures, gup() will not be enough to make a subsequent access
823  * succeed.
824  *
825  * This function will not return with an unlocked mmap_sem. So it has not the
826  * same semantics wrt the @mm->mmap_sem as does filemap_fault().
827  */
828 int fixup_user_fault(struct task_struct *tsk, struct mm_struct *mm,
829                      unsigned long address, unsigned int fault_flags,
830                      bool *unlocked)
831 {
832         struct vm_area_struct *vma;
833         vm_fault_t ret, major = 0;
834
835         if (unlocked)
836                 fault_flags |= FAULT_FLAG_ALLOW_RETRY;
837
838 retry:
839         vma = find_extend_vma(mm, address);
840         if (!vma || address < vma->vm_start)
841                 return -EFAULT;
842
843         if (!vma_permits_fault(vma, fault_flags))
844                 return -EFAULT;
845
846         ret = handle_mm_fault(vma, address, fault_flags);
847         major |= ret & VM_FAULT_MAJOR;
848         if (ret & VM_FAULT_ERROR) {
849                 int err = vm_fault_to_errno(ret, 0);
850
851                 if (err)
852                         return err;
853                 BUG();
854         }
855
856         if (ret & VM_FAULT_RETRY) {
857                 down_read(&mm->mmap_sem);
858                 if (!(fault_flags & FAULT_FLAG_TRIED)) {
859                         *unlocked = true;
860                         fault_flags &= ~FAULT_FLAG_ALLOW_RETRY;
861                         fault_flags |= FAULT_FLAG_TRIED;
862                         goto retry;
863                 }
864         }
865
866         if (tsk) {
867                 if (major)
868                         tsk->maj_flt++;
869                 else
870                         tsk->min_flt++;
871         }
872         return 0;
873 }
874 EXPORT_SYMBOL_GPL(fixup_user_fault);
875
876 static __always_inline long __get_user_pages_locked(struct task_struct *tsk,
877                                                 struct mm_struct *mm,
878                                                 unsigned long start,
879                                                 unsigned long nr_pages,
880                                                 struct page **pages,
881                                                 struct vm_area_struct **vmas,
882                                                 int *locked,
883                                                 unsigned int flags)
884 {
885         long ret, pages_done;
886         bool lock_dropped;
887
888         if (locked) {
889                 /* if VM_FAULT_RETRY can be returned, vmas become invalid */
890                 BUG_ON(vmas);
891                 /* check caller initialized locked */
892                 BUG_ON(*locked != 1);
893         }
894
895         if (pages)
896                 flags |= FOLL_GET;
897
898         pages_done = 0;
899         lock_dropped = false;
900         for (;;) {
901                 ret = __get_user_pages(tsk, mm, start, nr_pages, flags, pages,
902                                        vmas, locked);
903                 if (!locked)
904                         /* VM_FAULT_RETRY couldn't trigger, bypass */
905                         return ret;
906
907                 /* VM_FAULT_RETRY cannot return errors */
908                 if (!*locked) {
909                         BUG_ON(ret < 0);
910                         BUG_ON(ret >= nr_pages);
911                 }
912
913                 if (!pages)
914                         /* If it's a prefault don't insist harder */
915                         return ret;
916
917                 if (ret > 0) {
918                         nr_pages -= ret;
919                         pages_done += ret;
920                         if (!nr_pages)
921                                 break;
922                 }
923                 if (*locked) {
924                         /*
925                          * VM_FAULT_RETRY didn't trigger or it was a
926                          * FOLL_NOWAIT.
927                          */
928                         if (!pages_done)
929                                 pages_done = ret;
930                         break;
931                 }
932                 /* VM_FAULT_RETRY triggered, so seek to the faulting offset */
933                 pages += ret;
934                 start += ret << PAGE_SHIFT;
935
936                 /*
937                  * Repeat on the address that fired VM_FAULT_RETRY
938                  * without FAULT_FLAG_ALLOW_RETRY but with
939                  * FAULT_FLAG_TRIED.
940                  */
941                 *locked = 1;
942                 lock_dropped = true;
943                 down_read(&mm->mmap_sem);
944                 ret = __get_user_pages(tsk, mm, start, 1, flags | FOLL_TRIED,
945                                        pages, NULL, NULL);
946                 if (ret != 1) {
947                         BUG_ON(ret > 1);
948                         if (!pages_done)
949                                 pages_done = ret;
950                         break;
951                 }
952                 nr_pages--;
953                 pages_done++;
954                 if (!nr_pages)
955                         break;
956                 pages++;
957                 start += PAGE_SIZE;
958         }
959         if (lock_dropped && *locked) {
960                 /*
961                  * We must let the caller know we temporarily dropped the lock
962                  * and so the critical section protected by it was lost.
963                  */
964                 up_read(&mm->mmap_sem);
965                 *locked = 0;
966         }
967         return pages_done;
968 }
969
970 /*
971  * We can leverage the VM_FAULT_RETRY functionality in the page fault
972  * paths better by using either get_user_pages_locked() or
973  * get_user_pages_unlocked().
974  *
975  * get_user_pages_locked() is suitable to replace the form:
976  *
977  *      down_read(&mm->mmap_sem);
978  *      do_something()
979  *      get_user_pages(tsk, mm, ..., pages, NULL);
980  *      up_read(&mm->mmap_sem);
981  *
982  *  to:
983  *
984  *      int locked = 1;
985  *      down_read(&mm->mmap_sem);
986  *      do_something()
987  *      get_user_pages_locked(tsk, mm, ..., pages, &locked);
988  *      if (locked)
989  *          up_read(&mm->mmap_sem);
990  */
991 long get_user_pages_locked(unsigned long start, unsigned long nr_pages,
992                            unsigned int gup_flags, struct page **pages,
993                            int *locked)
994 {
995         return __get_user_pages_locked(current, current->mm, start, nr_pages,
996                                        pages, NULL, locked,
997                                        gup_flags | FOLL_TOUCH);
998 }
999 EXPORT_SYMBOL(get_user_pages_locked);
1000
1001 /*
1002  * get_user_pages_unlocked() is suitable to replace the form:
1003  *
1004  *      down_read(&mm->mmap_sem);
1005  *      get_user_pages(tsk, mm, ..., pages, NULL);
1006  *      up_read(&mm->mmap_sem);
1007  *
1008  *  with:
1009  *
1010  *      get_user_pages_unlocked(tsk, mm, ..., pages);
1011  *
1012  * It is functionally equivalent to get_user_pages_fast so
1013  * get_user_pages_fast should be used instead if specific gup_flags
1014  * (e.g. FOLL_FORCE) are not required.
1015  */
1016 long get_user_pages_unlocked(unsigned long start, unsigned long nr_pages,
1017                              struct page **pages, unsigned int gup_flags)
1018 {
1019         struct mm_struct *mm = current->mm;
1020         int locked = 1;
1021         long ret;
1022
1023         down_read(&mm->mmap_sem);
1024         ret = __get_user_pages_locked(current, mm, start, nr_pages, pages, NULL,
1025                                       &locked, gup_flags | FOLL_TOUCH);
1026         if (locked)
1027                 up_read(&mm->mmap_sem);
1028         return ret;
1029 }
1030 EXPORT_SYMBOL(get_user_pages_unlocked);
1031
1032 /*
1033  * get_user_pages_remote() - pin user pages in memory
1034  * @tsk:        the task_struct to use for page fault accounting, or
1035  *              NULL if faults are not to be recorded.
1036  * @mm:         mm_struct of target mm
1037  * @start:      starting user address
1038  * @nr_pages:   number of pages from start to pin
1039  * @gup_flags:  flags modifying lookup behaviour
1040  * @pages:      array that receives pointers to the pages pinned.
1041  *              Should be at least nr_pages long. Or NULL, if caller
1042  *              only intends to ensure the pages are faulted in.
1043  * @vmas:       array of pointers to vmas corresponding to each page.
1044  *              Or NULL if the caller does not require them.
1045  * @locked:     pointer to lock flag indicating whether lock is held and
1046  *              subsequently whether VM_FAULT_RETRY functionality can be
1047  *              utilised. Lock must initially be held.
1048  *
1049  * Returns number of pages pinned. This may be fewer than the number
1050  * requested. If nr_pages is 0 or negative, returns 0. If no pages
1051  * were pinned, returns -errno. Each page returned must be released
1052  * with a put_page() call when it is finished with. vmas will only
1053  * remain valid while mmap_sem is held.
1054  *
1055  * Must be called with mmap_sem held for read or write.
1056  *
1057  * get_user_pages walks a process's page tables and takes a reference to
1058  * each struct page that each user address corresponds to at a given
1059  * instant. That is, it takes the page that would be accessed if a user
1060  * thread accesses the given user virtual address at that instant.
1061  *
1062  * This does not guarantee that the page exists in the user mappings when
1063  * get_user_pages returns, and there may even be a completely different
1064  * page there in some cases (eg. if mmapped pagecache has been invalidated
1065  * and subsequently re faulted). However it does guarantee that the page
1066  * won't be freed completely. And mostly callers simply care that the page
1067  * contains data that was valid *at some point in time*. Typically, an IO
1068  * or similar operation cannot guarantee anything stronger anyway because
1069  * locks can't be held over the syscall boundary.
1070  *
1071  * If gup_flags & FOLL_WRITE == 0, the page must not be written to. If the page
1072  * is written to, set_page_dirty (or set_page_dirty_lock, as appropriate) must
1073  * be called after the page is finished with, and before put_page is called.
1074  *
1075  * get_user_pages is typically used for fewer-copy IO operations, to get a
1076  * handle on the memory by some means other than accesses via the user virtual
1077  * addresses. The pages may be submitted for DMA to devices or accessed via
1078  * their kernel linear mapping (via the kmap APIs). Care should be taken to
1079  * use the correct cache flushing APIs.
1080  *
1081  * See also get_user_pages_fast, for performance critical applications.
1082  *
1083  * get_user_pages should be phased out in favor of
1084  * get_user_pages_locked|unlocked or get_user_pages_fast. Nothing
1085  * should use get_user_pages because it cannot pass
1086  * FAULT_FLAG_ALLOW_RETRY to handle_mm_fault.
1087  */
1088 long get_user_pages_remote(struct task_struct *tsk, struct mm_struct *mm,
1089                 unsigned long start, unsigned long nr_pages,
1090                 unsigned int gup_flags, struct page **pages,
1091                 struct vm_area_struct **vmas, int *locked)
1092 {
1093         return __get_user_pages_locked(tsk, mm, start, nr_pages, pages, vmas,
1094                                        locked,
1095                                        gup_flags | FOLL_TOUCH | FOLL_REMOTE);
1096 }
1097 EXPORT_SYMBOL(get_user_pages_remote);
1098
1099 /*
1100  * This is the same as get_user_pages_remote(), just with a
1101  * less-flexible calling convention where we assume that the task
1102  * and mm being operated on are the current task's and don't allow
1103  * passing of a locked parameter.  We also obviously don't pass
1104  * FOLL_REMOTE in here.
1105  */
1106 long get_user_pages(unsigned long start, unsigned long nr_pages,
1107                 unsigned int gup_flags, struct page **pages,
1108                 struct vm_area_struct **vmas)
1109 {
1110         return __get_user_pages_locked(current, current->mm, start, nr_pages,
1111                                        pages, vmas, NULL,
1112                                        gup_flags | FOLL_TOUCH);
1113 }
1114 EXPORT_SYMBOL(get_user_pages);
1115
1116 #ifdef CONFIG_FS_DAX
1117 /*
1118  * This is the same as get_user_pages() in that it assumes we are
1119  * operating on the current task's mm, but it goes further to validate
1120  * that the vmas associated with the address range are suitable for
1121  * longterm elevated page reference counts. For example, filesystem-dax
1122  * mappings are subject to the lifetime enforced by the filesystem and
1123  * we need guarantees that longterm users like RDMA and V4L2 only
1124  * establish mappings that have a kernel enforced revocation mechanism.
1125  *
1126  * "longterm" == userspace controlled elevated page count lifetime.
1127  * Contrast this to iov_iter_get_pages() usages which are transient.
1128  */
1129 long get_user_pages_longterm(unsigned long start, unsigned long nr_pages,
1130                 unsigned int gup_flags, struct page **pages,
1131                 struct vm_area_struct **vmas_arg)
1132 {
1133         struct vm_area_struct **vmas = vmas_arg;
1134         struct vm_area_struct *vma_prev = NULL;
1135         long rc, i;
1136
1137         if (!pages)
1138                 return -EINVAL;
1139
1140         if (!vmas) {
1141                 vmas = kcalloc(nr_pages, sizeof(struct vm_area_struct *),
1142                                GFP_KERNEL);
1143                 if (!vmas)
1144                         return -ENOMEM;
1145         }
1146
1147         rc = get_user_pages(start, nr_pages, gup_flags, pages, vmas);
1148
1149         for (i = 0; i < rc; i++) {
1150                 struct vm_area_struct *vma = vmas[i];
1151
1152                 if (vma == vma_prev)
1153                         continue;
1154
1155                 vma_prev = vma;
1156
1157                 if (vma_is_fsdax(vma))
1158                         break;
1159         }
1160
1161         /*
1162          * Either get_user_pages() failed, or the vma validation
1163          * succeeded, in either case we don't need to put_page() before
1164          * returning.
1165          */
1166         if (i >= rc)
1167                 goto out;
1168
1169         for (i = 0; i < rc; i++)
1170                 put_page(pages[i]);
1171         rc = -EOPNOTSUPP;
1172 out:
1173         if (vmas != vmas_arg)
1174                 kfree(vmas);
1175         return rc;
1176 }
1177 EXPORT_SYMBOL(get_user_pages_longterm);
1178 #endif /* CONFIG_FS_DAX */
1179
1180 /**
1181  * populate_vma_page_range() -  populate a range of pages in the vma.
1182  * @vma:   target vma
1183  * @start: start address
1184  * @end:   end address
1185  * @nonblocking:
1186  *
1187  * This takes care of mlocking the pages too if VM_LOCKED is set.
1188  *
1189  * return 0 on success, negative error code on error.
1190  *
1191  * vma->vm_mm->mmap_sem must be held.
1192  *
1193  * If @nonblocking is NULL, it may be held for read or write and will
1194  * be unperturbed.
1195  *
1196  * If @nonblocking is non-NULL, it must held for read only and may be
1197  * released.  If it's released, *@nonblocking will be set to 0.
1198  */
1199 long populate_vma_page_range(struct vm_area_struct *vma,
1200                 unsigned long start, unsigned long end, int *nonblocking)
1201 {
1202         struct mm_struct *mm = vma->vm_mm;
1203         unsigned long nr_pages = (end - start) / PAGE_SIZE;
1204         int gup_flags;
1205
1206         VM_BUG_ON(start & ~PAGE_MASK);
1207         VM_BUG_ON(end   & ~PAGE_MASK);
1208         VM_BUG_ON_VMA(start < vma->vm_start, vma);
1209         VM_BUG_ON_VMA(end   > vma->vm_end, vma);
1210         VM_BUG_ON_MM(!rwsem_is_locked(&mm->mmap_sem), mm);
1211
1212         gup_flags = FOLL_TOUCH | FOLL_POPULATE | FOLL_MLOCK;
1213         if (vma->vm_flags & VM_LOCKONFAULT)
1214                 gup_flags &= ~FOLL_POPULATE;
1215         /*
1216          * We want to touch writable mappings with a write fault in order
1217          * to break COW, except for shared mappings because these don't COW
1218          * and we would not want to dirty them for nothing.
1219          */
1220         if ((vma->vm_flags & (VM_WRITE | VM_SHARED)) == VM_WRITE)
1221                 gup_flags |= FOLL_WRITE;
1222
1223         /*
1224          * We want mlock to succeed for regions that have any permissions
1225          * other than PROT_NONE.
1226          */
1227         if (vma->vm_flags & (VM_READ | VM_WRITE | VM_EXEC))
1228                 gup_flags |= FOLL_FORCE;
1229
1230         /*
1231          * We made sure addr is within a VMA, so the following will
1232          * not result in a stack expansion that recurses back here.
1233          */
1234         return __get_user_pages(current, mm, start, nr_pages, gup_flags,
1235                                 NULL, NULL, nonblocking);
1236 }
1237
1238 /*
1239  * __mm_populate - populate and/or mlock pages within a range of address space.
1240  *
1241  * This is used to implement mlock() and the MAP_POPULATE / MAP_LOCKED mmap
1242  * flags. VMAs must be already marked with the desired vm_flags, and
1243  * mmap_sem must not be held.
1244  */
1245 int __mm_populate(unsigned long start, unsigned long len, int ignore_errors)
1246 {
1247         struct mm_struct *mm = current->mm;
1248         unsigned long end, nstart, nend;
1249         struct vm_area_struct *vma = NULL;
1250         int locked = 0;
1251         long ret = 0;
1252
1253         end = start + len;
1254
1255         for (nstart = start; nstart < end; nstart = nend) {
1256                 /*
1257                  * We want to fault in pages for [nstart; end) address range.
1258                  * Find first corresponding VMA.
1259                  */
1260                 if (!locked) {
1261                         locked = 1;
1262                         down_read(&mm->mmap_sem);
1263                         vma = find_vma(mm, nstart);
1264                 } else if (nstart >= vma->vm_end)
1265                         vma = vma->vm_next;
1266                 if (!vma || vma->vm_start >= end)
1267                         break;
1268                 /*
1269                  * Set [nstart; nend) to intersection of desired address
1270                  * range with the first VMA. Also, skip undesirable VMA types.
1271                  */
1272                 nend = min(end, vma->vm_end);
1273                 if (vma->vm_flags & (VM_IO | VM_PFNMAP))
1274                         continue;
1275                 if (nstart < vma->vm_start)
1276                         nstart = vma->vm_start;
1277                 /*
1278                  * Now fault in a range of pages. populate_vma_page_range()
1279                  * double checks the vma flags, so that it won't mlock pages
1280                  * if the vma was already munlocked.
1281                  */
1282                 ret = populate_vma_page_range(vma, nstart, nend, &locked);
1283                 if (ret < 0) {
1284                         if (ignore_errors) {
1285                                 ret = 0;
1286                                 continue;       /* continue at next VMA */
1287                         }
1288                         break;
1289                 }
1290                 nend = nstart + ret * PAGE_SIZE;
1291                 ret = 0;
1292         }
1293         if (locked)
1294                 up_read(&mm->mmap_sem);
1295         return ret;     /* 0 or negative error code */
1296 }
1297
1298 /**
1299  * get_dump_page() - pin user page in memory while writing it to core dump
1300  * @addr: user address
1301  *
1302  * Returns struct page pointer of user page pinned for dump,
1303  * to be freed afterwards by put_page().
1304  *
1305  * Returns NULL on any kind of failure - a hole must then be inserted into
1306  * the corefile, to preserve alignment with its headers; and also returns
1307  * NULL wherever the ZERO_PAGE, or an anonymous pte_none, has been found -
1308  * allowing a hole to be left in the corefile to save diskspace.
1309  *
1310  * Called without mmap_sem, but after all other threads have been killed.
1311  */
1312 #ifdef CONFIG_ELF_CORE
1313 struct page *get_dump_page(unsigned long addr)
1314 {
1315         struct vm_area_struct *vma;
1316         struct page *page;
1317
1318         if (__get_user_pages(current, current->mm, addr, 1,
1319                              FOLL_FORCE | FOLL_DUMP | FOLL_GET, &page, &vma,
1320                              NULL) < 1)
1321                 return NULL;
1322         flush_cache_page(vma, addr, page_to_pfn(page));
1323         return page;
1324 }
1325 #endif /* CONFIG_ELF_CORE */
1326
1327 /*
1328  * Generic Fast GUP
1329  *
1330  * get_user_pages_fast attempts to pin user pages by walking the page
1331  * tables directly and avoids taking locks. Thus the walker needs to be
1332  * protected from page table pages being freed from under it, and should
1333  * block any THP splits.
1334  *
1335  * One way to achieve this is to have the walker disable interrupts, and
1336  * rely on IPIs from the TLB flushing code blocking before the page table
1337  * pages are freed. This is unsuitable for architectures that do not need
1338  * to broadcast an IPI when invalidating TLBs.
1339  *
1340  * Another way to achieve this is to batch up page table containing pages
1341  * belonging to more than one mm_user, then rcu_sched a callback to free those
1342  * pages. Disabling interrupts will allow the fast_gup walker to both block
1343  * the rcu_sched callback, and an IPI that we broadcast for splitting THPs
1344  * (which is a relatively rare event). The code below adopts this strategy.
1345  *
1346  * Before activating this code, please be aware that the following assumptions
1347  * are currently made:
1348  *
1349  *  *) Either HAVE_RCU_TABLE_FREE is enabled, and tlb_remove_table() is used to
1350  *  free pages containing page tables or TLB flushing requires IPI broadcast.
1351  *
1352  *  *) ptes can be read atomically by the architecture.
1353  *
1354  *  *) access_ok is sufficient to validate userspace address ranges.
1355  *
1356  * The last two assumptions can be relaxed by the addition of helper functions.
1357  *
1358  * This code is based heavily on the PowerPC implementation by Nick Piggin.
1359  */
1360 #ifdef CONFIG_HAVE_GENERIC_GUP
1361
1362 #ifndef gup_get_pte
1363 /*
1364  * We assume that the PTE can be read atomically. If this is not the case for
1365  * your architecture, please provide the helper.
1366  */
1367 static inline pte_t gup_get_pte(pte_t *ptep)
1368 {
1369         return READ_ONCE(*ptep);
1370 }
1371 #endif
1372
1373 static void __maybe_unused undo_dev_pagemap(int *nr, int nr_start,
1374                                             struct page **pages)
1375 {
1376         while ((*nr) - nr_start) {
1377                 struct page *page = pages[--(*nr)];
1378
1379                 ClearPageReferenced(page);
1380                 put_page(page);
1381         }
1382 }
1383
1384 /*
1385  * Return the compund head page with ref appropriately incremented,
1386  * or NULL if that failed.
1387  */
1388 static inline struct page *try_get_compound_head(struct page *page, int refs)
1389 {
1390         struct page *head = compound_head(page);
1391         if (WARN_ON_ONCE(page_ref_count(head) < 0))
1392                 return NULL;
1393         if (unlikely(!page_cache_add_speculative(head, refs)))
1394                 return NULL;
1395         return head;
1396 }
1397
1398 #ifdef CONFIG_ARCH_HAS_PTE_SPECIAL
1399 static int gup_pte_range(pmd_t pmd, unsigned long addr, unsigned long end,
1400                          int write, struct page **pages, int *nr)
1401 {
1402         struct dev_pagemap *pgmap = NULL;
1403         int nr_start = *nr, ret = 0;
1404         pte_t *ptep, *ptem;
1405
1406         ptem = ptep = pte_offset_map(&pmd, addr);
1407         do {
1408                 pte_t pte = gup_get_pte(ptep);
1409                 struct page *head, *page;
1410
1411                 /*
1412                  * Similar to the PMD case below, NUMA hinting must take slow
1413                  * path using the pte_protnone check.
1414                  */
1415                 if (pte_protnone(pte))
1416                         goto pte_unmap;
1417
1418                 if (!pte_access_permitted(pte, write))
1419                         goto pte_unmap;
1420
1421                 if (pte_devmap(pte)) {
1422                         pgmap = get_dev_pagemap(pte_pfn(pte), pgmap);
1423                         if (unlikely(!pgmap)) {
1424                                 undo_dev_pagemap(nr, nr_start, pages);
1425                                 goto pte_unmap;
1426                         }
1427                 } else if (pte_special(pte))
1428                         goto pte_unmap;
1429
1430                 VM_BUG_ON(!pfn_valid(pte_pfn(pte)));
1431                 page = pte_page(pte);
1432
1433                 head = try_get_compound_head(page, 1);
1434                 if (!head)
1435                         goto pte_unmap;
1436
1437                 if (unlikely(pte_val(pte) != pte_val(*ptep))) {
1438                         put_page(head);
1439                         goto pte_unmap;
1440                 }
1441
1442                 VM_BUG_ON_PAGE(compound_head(page) != head, page);
1443
1444                 SetPageReferenced(page);
1445                 pages[*nr] = page;
1446                 (*nr)++;
1447
1448         } while (ptep++, addr += PAGE_SIZE, addr != end);
1449
1450         ret = 1;
1451
1452 pte_unmap:
1453         if (pgmap)
1454                 put_dev_pagemap(pgmap);
1455         pte_unmap(ptem);
1456         return ret;
1457 }
1458 #else
1459
1460 /*
1461  * If we can't determine whether or not a pte is special, then fail immediately
1462  * for ptes. Note, we can still pin HugeTLB and THP as these are guaranteed not
1463  * to be special.
1464  *
1465  * For a futex to be placed on a THP tail page, get_futex_key requires a
1466  * __get_user_pages_fast implementation that can pin pages. Thus it's still
1467  * useful to have gup_huge_pmd even if we can't operate on ptes.
1468  */
1469 static int gup_pte_range(pmd_t pmd, unsigned long addr, unsigned long end,
1470                          int write, struct page **pages, int *nr)
1471 {
1472         return 0;
1473 }
1474 #endif /* CONFIG_ARCH_HAS_PTE_SPECIAL */
1475
1476 #if defined(__HAVE_ARCH_PTE_DEVMAP) && defined(CONFIG_TRANSPARENT_HUGEPAGE)
1477 static int __gup_device_huge(unsigned long pfn, unsigned long addr,
1478                 unsigned long end, struct page **pages, int *nr)
1479 {
1480         int nr_start = *nr;
1481         struct dev_pagemap *pgmap = NULL;
1482
1483         do {
1484                 struct page *page = pfn_to_page(pfn);
1485
1486                 pgmap = get_dev_pagemap(pfn, pgmap);
1487                 if (unlikely(!pgmap)) {
1488                         undo_dev_pagemap(nr, nr_start, pages);
1489                         return 0;
1490                 }
1491                 SetPageReferenced(page);
1492                 pages[*nr] = page;
1493                 get_page(page);
1494                 (*nr)++;
1495                 pfn++;
1496         } while (addr += PAGE_SIZE, addr != end);
1497
1498         if (pgmap)
1499                 put_dev_pagemap(pgmap);
1500         return 1;
1501 }
1502
1503 static int __gup_device_huge_pmd(pmd_t orig, pmd_t *pmdp, unsigned long addr,
1504                 unsigned long end, struct page **pages, int *nr)
1505 {
1506         unsigned long fault_pfn;
1507         int nr_start = *nr;
1508
1509         fault_pfn = pmd_pfn(orig) + ((addr & ~PMD_MASK) >> PAGE_SHIFT);
1510         if (!__gup_device_huge(fault_pfn, addr, end, pages, nr))
1511                 return 0;
1512
1513         if (unlikely(pmd_val(orig) != pmd_val(*pmdp))) {
1514                 undo_dev_pagemap(nr, nr_start, pages);
1515                 return 0;
1516         }
1517         return 1;
1518 }
1519
1520 static int __gup_device_huge_pud(pud_t orig, pud_t *pudp, unsigned long addr,
1521                 unsigned long end, struct page **pages, int *nr)
1522 {
1523         unsigned long fault_pfn;
1524         int nr_start = *nr;
1525
1526         fault_pfn = pud_pfn(orig) + ((addr & ~PUD_MASK) >> PAGE_SHIFT);
1527         if (!__gup_device_huge(fault_pfn, addr, end, pages, nr))
1528                 return 0;
1529
1530         if (unlikely(pud_val(orig) != pud_val(*pudp))) {
1531                 undo_dev_pagemap(nr, nr_start, pages);
1532                 return 0;
1533         }
1534         return 1;
1535 }
1536 #else
1537 static int __gup_device_huge_pmd(pmd_t orig, pmd_t *pmdp, unsigned long addr,
1538                 unsigned long end, struct page **pages, int *nr)
1539 {
1540         BUILD_BUG();
1541         return 0;
1542 }
1543
1544 static int __gup_device_huge_pud(pud_t pud, pud_t *pudp, unsigned long addr,
1545                 unsigned long end, struct page **pages, int *nr)
1546 {
1547         BUILD_BUG();
1548         return 0;
1549 }
1550 #endif
1551
1552 static int gup_huge_pmd(pmd_t orig, pmd_t *pmdp, unsigned long addr,
1553                 unsigned long end, int write, struct page **pages, int *nr)
1554 {
1555         struct page *head, *page;
1556         int refs;
1557
1558         if (!pmd_access_permitted(orig, write))
1559                 return 0;
1560
1561         if (pmd_devmap(orig))
1562                 return __gup_device_huge_pmd(orig, pmdp, addr, end, pages, nr);
1563
1564         refs = 0;
1565         page = pmd_page(orig) + ((addr & ~PMD_MASK) >> PAGE_SHIFT);
1566         do {
1567                 pages[*nr] = page;
1568                 (*nr)++;
1569                 page++;
1570                 refs++;
1571         } while (addr += PAGE_SIZE, addr != end);
1572
1573         head = try_get_compound_head(pmd_page(orig), refs);
1574         if (!head) {
1575                 *nr -= refs;
1576                 return 0;
1577         }
1578
1579         if (unlikely(pmd_val(orig) != pmd_val(*pmdp))) {
1580                 *nr -= refs;
1581                 while (refs--)
1582                         put_page(head);
1583                 return 0;
1584         }
1585
1586         SetPageReferenced(head);
1587         return 1;
1588 }
1589
1590 static int gup_huge_pud(pud_t orig, pud_t *pudp, unsigned long addr,
1591                 unsigned long end, int write, struct page **pages, int *nr)
1592 {
1593         struct page *head, *page;
1594         int refs;
1595
1596         if (!pud_access_permitted(orig, write))
1597                 return 0;
1598
1599         if (pud_devmap(orig))
1600                 return __gup_device_huge_pud(orig, pudp, addr, end, pages, nr);
1601
1602         refs = 0;
1603         page = pud_page(orig) + ((addr & ~PUD_MASK) >> PAGE_SHIFT);
1604         do {
1605                 pages[*nr] = page;
1606                 (*nr)++;
1607                 page++;
1608                 refs++;
1609         } while (addr += PAGE_SIZE, addr != end);
1610
1611         head = try_get_compound_head(pud_page(orig), refs);
1612         if (!head) {
1613                 *nr -= refs;
1614                 return 0;
1615         }
1616
1617         if (unlikely(pud_val(orig) != pud_val(*pudp))) {
1618                 *nr -= refs;
1619                 while (refs--)
1620                         put_page(head);
1621                 return 0;
1622         }
1623
1624         SetPageReferenced(head);
1625         return 1;
1626 }
1627
1628 static int gup_huge_pgd(pgd_t orig, pgd_t *pgdp, unsigned long addr,
1629                         unsigned long end, int write,
1630                         struct page **pages, int *nr)
1631 {
1632         int refs;
1633         struct page *head, *page;
1634
1635         if (!pgd_access_permitted(orig, write))
1636                 return 0;
1637
1638         BUILD_BUG_ON(pgd_devmap(orig));
1639         refs = 0;
1640         page = pgd_page(orig) + ((addr & ~PGDIR_MASK) >> PAGE_SHIFT);
1641         do {
1642                 pages[*nr] = page;
1643                 (*nr)++;
1644                 page++;
1645                 refs++;
1646         } while (addr += PAGE_SIZE, addr != end);
1647
1648         head = try_get_compound_head(pgd_page(orig), refs);
1649         if (!head) {
1650                 *nr -= refs;
1651                 return 0;
1652         }
1653
1654         if (unlikely(pgd_val(orig) != pgd_val(*pgdp))) {
1655                 *nr -= refs;
1656                 while (refs--)
1657                         put_page(head);
1658                 return 0;
1659         }
1660
1661         SetPageReferenced(head);
1662         return 1;
1663 }
1664
1665 static int gup_pmd_range(pud_t pud, unsigned long addr, unsigned long end,
1666                 int write, struct page **pages, int *nr)
1667 {
1668         unsigned long next;
1669         pmd_t *pmdp;
1670
1671         pmdp = pmd_offset(&pud, addr);
1672         do {
1673                 pmd_t pmd = READ_ONCE(*pmdp);
1674
1675                 next = pmd_addr_end(addr, end);
1676                 if (!pmd_present(pmd))
1677                         return 0;
1678
1679                 if (unlikely(pmd_trans_huge(pmd) || pmd_huge(pmd) ||
1680                              pmd_devmap(pmd))) {
1681                         /*
1682                          * NUMA hinting faults need to be handled in the GUP
1683                          * slowpath for accounting purposes and so that they
1684                          * can be serialised against THP migration.
1685                          */
1686                         if (pmd_protnone(pmd))
1687                                 return 0;
1688
1689                         if (!gup_huge_pmd(pmd, pmdp, addr, next, write,
1690                                 pages, nr))
1691                                 return 0;
1692
1693                 } else if (unlikely(is_hugepd(__hugepd(pmd_val(pmd))))) {
1694                         /*
1695                          * architecture have different format for hugetlbfs
1696                          * pmd format and THP pmd format
1697                          */
1698                         if (!gup_huge_pd(__hugepd(pmd_val(pmd)), addr,
1699                                          PMD_SHIFT, next, write, pages, nr))
1700                                 return 0;
1701                 } else if (!gup_pte_range(pmd, addr, next, write, pages, nr))
1702                         return 0;
1703         } while (pmdp++, addr = next, addr != end);
1704
1705         return 1;
1706 }
1707
1708 static int gup_pud_range(p4d_t p4d, unsigned long addr, unsigned long end,
1709                          int write, struct page **pages, int *nr)
1710 {
1711         unsigned long next;
1712         pud_t *pudp;
1713
1714         pudp = pud_offset(&p4d, addr);
1715         do {
1716                 pud_t pud = READ_ONCE(*pudp);
1717
1718                 next = pud_addr_end(addr, end);
1719                 if (pud_none(pud))
1720                         return 0;
1721                 if (unlikely(pud_huge(pud))) {
1722                         if (!gup_huge_pud(pud, pudp, addr, next, write,
1723                                           pages, nr))
1724                                 return 0;
1725                 } else if (unlikely(is_hugepd(__hugepd(pud_val(pud))))) {
1726                         if (!gup_huge_pd(__hugepd(pud_val(pud)), addr,
1727                                          PUD_SHIFT, next, write, pages, nr))
1728                                 return 0;
1729                 } else if (!gup_pmd_range(pud, addr, next, write, pages, nr))
1730                         return 0;
1731         } while (pudp++, addr = next, addr != end);
1732
1733         return 1;
1734 }
1735
1736 static int gup_p4d_range(pgd_t pgd, unsigned long addr, unsigned long end,
1737                          int write, struct page **pages, int *nr)
1738 {
1739         unsigned long next;
1740         p4d_t *p4dp;
1741
1742         p4dp = p4d_offset(&pgd, addr);
1743         do {
1744                 p4d_t p4d = READ_ONCE(*p4dp);
1745
1746                 next = p4d_addr_end(addr, end);
1747                 if (p4d_none(p4d))
1748                         return 0;
1749                 BUILD_BUG_ON(p4d_huge(p4d));
1750                 if (unlikely(is_hugepd(__hugepd(p4d_val(p4d))))) {
1751                         if (!gup_huge_pd(__hugepd(p4d_val(p4d)), addr,
1752                                          P4D_SHIFT, next, write, pages, nr))
1753                                 return 0;
1754                 } else if (!gup_pud_range(p4d, addr, next, write, pages, nr))
1755                         return 0;
1756         } while (p4dp++, addr = next, addr != end);
1757
1758         return 1;
1759 }
1760
1761 static void gup_pgd_range(unsigned long addr, unsigned long end,
1762                 int write, struct page **pages, int *nr)
1763 {
1764         unsigned long next;
1765         pgd_t *pgdp;
1766
1767         pgdp = pgd_offset(current->mm, addr);
1768         do {
1769                 pgd_t pgd = READ_ONCE(*pgdp);
1770
1771                 next = pgd_addr_end(addr, end);
1772                 if (pgd_none(pgd))
1773                         return;
1774                 if (unlikely(pgd_huge(pgd))) {
1775                         if (!gup_huge_pgd(pgd, pgdp, addr, next, write,
1776                                           pages, nr))
1777                                 return;
1778                 } else if (unlikely(is_hugepd(__hugepd(pgd_val(pgd))))) {
1779                         if (!gup_huge_pd(__hugepd(pgd_val(pgd)), addr,
1780                                          PGDIR_SHIFT, next, write, pages, nr))
1781                                 return;
1782                 } else if (!gup_p4d_range(pgd, addr, next, write, pages, nr))
1783                         return;
1784         } while (pgdp++, addr = next, addr != end);
1785 }
1786
1787 #ifndef gup_fast_permitted
1788 /*
1789  * Check if it's allowed to use __get_user_pages_fast() for the range, or
1790  * we need to fall back to the slow version:
1791  */
1792 bool gup_fast_permitted(unsigned long start, int nr_pages, int write)
1793 {
1794         unsigned long len, end;
1795
1796         len = (unsigned long) nr_pages << PAGE_SHIFT;
1797         end = start + len;
1798         return end >= start;
1799 }
1800 #endif
1801
1802 /*
1803  * Like get_user_pages_fast() except it's IRQ-safe in that it won't fall back to
1804  * the regular GUP.
1805  * Note a difference with get_user_pages_fast: this always returns the
1806  * number of pages pinned, 0 if no pages were pinned.
1807  */
1808 int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
1809                           struct page **pages)
1810 {
1811         unsigned long addr, len, end;
1812         unsigned long flags;
1813         int nr = 0;
1814
1815         start &= PAGE_MASK;
1816         addr = start;
1817         len = (unsigned long) nr_pages << PAGE_SHIFT;
1818         end = start + len;
1819
1820         if (unlikely(!access_ok(write ? VERIFY_WRITE : VERIFY_READ,
1821                                         (void __user *)start, len)))
1822                 return 0;
1823
1824         /*
1825          * Disable interrupts.  We use the nested form as we can already have
1826          * interrupts disabled by get_futex_key.
1827          *
1828          * With interrupts disabled, we block page table pages from being
1829          * freed from under us. See mmu_gather_tlb in asm-generic/tlb.h
1830          * for more details.
1831          *
1832          * We do not adopt an rcu_read_lock(.) here as we also want to
1833          * block IPIs that come from THPs splitting.
1834          */
1835
1836         if (gup_fast_permitted(start, nr_pages, write)) {
1837                 local_irq_save(flags);
1838                 gup_pgd_range(addr, end, write, pages, &nr);
1839                 local_irq_restore(flags);
1840         }
1841
1842         return nr;
1843 }
1844
1845 /**
1846  * get_user_pages_fast() - pin user pages in memory
1847  * @start:      starting user address
1848  * @nr_pages:   number of pages from start to pin
1849  * @write:      whether pages will be written to
1850  * @pages:      array that receives pointers to the pages pinned.
1851  *              Should be at least nr_pages long.
1852  *
1853  * Attempt to pin user pages in memory without taking mm->mmap_sem.
1854  * If not successful, it will fall back to taking the lock and
1855  * calling get_user_pages().
1856  *
1857  * Returns number of pages pinned. This may be fewer than the number
1858  * requested. If nr_pages is 0 or negative, returns 0. If no pages
1859  * were pinned, returns -errno.
1860  */
1861 int get_user_pages_fast(unsigned long start, int nr_pages, int write,
1862                         struct page **pages)
1863 {
1864         unsigned long addr, len, end;
1865         int nr = 0, ret = 0;
1866
1867         start &= PAGE_MASK;
1868         addr = start;
1869         len = (unsigned long) nr_pages << PAGE_SHIFT;
1870         end = start + len;
1871
1872         if (nr_pages <= 0)
1873                 return 0;
1874
1875         if (unlikely(!access_ok(write ? VERIFY_WRITE : VERIFY_READ,
1876                                         (void __user *)start, len)))
1877                 return -EFAULT;
1878
1879         if (gup_fast_permitted(start, nr_pages, write)) {
1880                 local_irq_disable();
1881                 gup_pgd_range(addr, end, write, pages, &nr);
1882                 local_irq_enable();
1883                 ret = nr;
1884         }
1885
1886         if (nr < nr_pages) {
1887                 /* Try to get the remaining pages with get_user_pages */
1888                 start += nr << PAGE_SHIFT;
1889                 pages += nr;
1890
1891                 ret = get_user_pages_unlocked(start, nr_pages - nr, pages,
1892                                 write ? FOLL_WRITE : 0);
1893
1894                 /* Have to be a bit careful with return values */
1895                 if (nr > 0) {
1896                         if (ret < 0)
1897                                 ret = nr;
1898                         else
1899                                 ret += nr;
1900                 }
1901         }
1902
1903         return ret;
1904 }
1905
1906 #endif /* CONFIG_HAVE_GENERIC_GUP */