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