Merge tag 'input-for-v6.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor...
[linux-2.6-microblaze.git] / mm / mempolicy.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Simple NUMA memory policy for the Linux kernel.
4  *
5  * Copyright 2003,2004 Andi Kleen, SuSE Labs.
6  * (C) Copyright 2005 Christoph Lameter, Silicon Graphics, Inc.
7  *
8  * NUMA policy allows the user to give hints in which node(s) memory should
9  * be allocated.
10  *
11  * Support four policies per VMA and per process:
12  *
13  * The VMA policy has priority over the process policy for a page fault.
14  *
15  * interleave     Allocate memory interleaved over a set of nodes,
16  *                with normal fallback if it fails.
17  *                For VMA based allocations this interleaves based on the
18  *                offset into the backing object or offset into the mapping
19  *                for anonymous memory. For process policy an process counter
20  *                is used.
21  *
22  * bind           Only allocate memory on a specific set of nodes,
23  *                no fallback.
24  *                FIXME: memory is allocated starting with the first node
25  *                to the last. It would be better if bind would truly restrict
26  *                the allocation to memory nodes instead
27  *
28  * preferred      Try a specific node first before normal fallback.
29  *                As a special case NUMA_NO_NODE here means do the allocation
30  *                on the local CPU. This is normally identical to default,
31  *                but useful to set in a VMA when you have a non default
32  *                process policy.
33  *
34  * preferred many Try a set of nodes first before normal fallback. This is
35  *                similar to preferred without the special case.
36  *
37  * default        Allocate on the local node first, or when on a VMA
38  *                use the process policy. This is what Linux always did
39  *                in a NUMA aware kernel and still does by, ahem, default.
40  *
41  * The process policy is applied for most non interrupt memory allocations
42  * in that process' context. Interrupts ignore the policies and always
43  * try to allocate on the local CPU. The VMA policy is only applied for memory
44  * allocations for a VMA in the VM.
45  *
46  * Currently there are a few corner cases in swapping where the policy
47  * is not applied, but the majority should be handled. When process policy
48  * is used it is not remembered over swap outs/swap ins.
49  *
50  * Only the highest zone in the zone hierarchy gets policied. Allocations
51  * requesting a lower zone just use default policy. This implies that
52  * on systems with highmem kernel lowmem allocation don't get policied.
53  * Same with GFP_DMA allocations.
54  *
55  * For shmem/tmpfs shared memory the policy is shared between
56  * all users and remembered even when nobody has memory mapped.
57  */
58
59 /* Notebook:
60    fix mmap readahead to honour policy and enable policy for any page cache
61    object
62    statistics for bigpages
63    global policy for page cache? currently it uses process policy. Requires
64    first item above.
65    handle mremap for shared memory (currently ignored for the policy)
66    grows down?
67    make bind policy root only? It can trigger oom much faster and the
68    kernel is not always grateful with that.
69 */
70
71 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
72
73 #include <linux/mempolicy.h>
74 #include <linux/pagewalk.h>
75 #include <linux/highmem.h>
76 #include <linux/hugetlb.h>
77 #include <linux/kernel.h>
78 #include <linux/sched.h>
79 #include <linux/sched/mm.h>
80 #include <linux/sched/numa_balancing.h>
81 #include <linux/sched/task.h>
82 #include <linux/nodemask.h>
83 #include <linux/cpuset.h>
84 #include <linux/slab.h>
85 #include <linux/string.h>
86 #include <linux/export.h>
87 #include <linux/nsproxy.h>
88 #include <linux/interrupt.h>
89 #include <linux/init.h>
90 #include <linux/compat.h>
91 #include <linux/ptrace.h>
92 #include <linux/swap.h>
93 #include <linux/seq_file.h>
94 #include <linux/proc_fs.h>
95 #include <linux/migrate.h>
96 #include <linux/ksm.h>
97 #include <linux/rmap.h>
98 #include <linux/security.h>
99 #include <linux/syscalls.h>
100 #include <linux/ctype.h>
101 #include <linux/mm_inline.h>
102 #include <linux/mmu_notifier.h>
103 #include <linux/printk.h>
104 #include <linux/swapops.h>
105
106 #include <asm/tlbflush.h>
107 #include <asm/tlb.h>
108 #include <linux/uaccess.h>
109
110 #include "internal.h"
111
112 /* Internal flags */
113 #define MPOL_MF_DISCONTIG_OK (MPOL_MF_INTERNAL << 0)    /* Skip checks for continuous vmas */
114 #define MPOL_MF_INVERT       (MPOL_MF_INTERNAL << 1)    /* Invert check for nodemask */
115 #define MPOL_MF_WRLOCK       (MPOL_MF_INTERNAL << 2)    /* Write-lock walked vmas */
116
117 static struct kmem_cache *policy_cache;
118 static struct kmem_cache *sn_cache;
119
120 /* Highest zone. An specific allocation for a zone below that is not
121    policied. */
122 enum zone_type policy_zone = 0;
123
124 /*
125  * run-time system-wide default policy => local allocation
126  */
127 static struct mempolicy default_policy = {
128         .refcnt = ATOMIC_INIT(1), /* never free it */
129         .mode = MPOL_LOCAL,
130 };
131
132 static struct mempolicy preferred_node_policy[MAX_NUMNODES];
133
134 /**
135  * numa_nearest_node - Find nearest node by state
136  * @node: Node id to start the search
137  * @state: State to filter the search
138  *
139  * Lookup the closest node by distance if @nid is not in state.
140  *
141  * Return: this @node if it is in state, otherwise the closest node by distance
142  */
143 int numa_nearest_node(int node, unsigned int state)
144 {
145         int min_dist = INT_MAX, dist, n, min_node;
146
147         if (state >= NR_NODE_STATES)
148                 return -EINVAL;
149
150         if (node == NUMA_NO_NODE || node_state(node, state))
151                 return node;
152
153         min_node = node;
154         for_each_node_state(n, state) {
155                 dist = node_distance(node, n);
156                 if (dist < min_dist) {
157                         min_dist = dist;
158                         min_node = n;
159                 }
160         }
161
162         return min_node;
163 }
164 EXPORT_SYMBOL_GPL(numa_nearest_node);
165
166 struct mempolicy *get_task_policy(struct task_struct *p)
167 {
168         struct mempolicy *pol = p->mempolicy;
169         int node;
170
171         if (pol)
172                 return pol;
173
174         node = numa_node_id();
175         if (node != NUMA_NO_NODE) {
176                 pol = &preferred_node_policy[node];
177                 /* preferred_node_policy is not initialised early in boot */
178                 if (pol->mode)
179                         return pol;
180         }
181
182         return &default_policy;
183 }
184
185 static const struct mempolicy_operations {
186         int (*create)(struct mempolicy *pol, const nodemask_t *nodes);
187         void (*rebind)(struct mempolicy *pol, const nodemask_t *nodes);
188 } mpol_ops[MPOL_MAX];
189
190 static inline int mpol_store_user_nodemask(const struct mempolicy *pol)
191 {
192         return pol->flags & MPOL_MODE_FLAGS;
193 }
194
195 static void mpol_relative_nodemask(nodemask_t *ret, const nodemask_t *orig,
196                                    const nodemask_t *rel)
197 {
198         nodemask_t tmp;
199         nodes_fold(tmp, *orig, nodes_weight(*rel));
200         nodes_onto(*ret, tmp, *rel);
201 }
202
203 static int mpol_new_nodemask(struct mempolicy *pol, const nodemask_t *nodes)
204 {
205         if (nodes_empty(*nodes))
206                 return -EINVAL;
207         pol->nodes = *nodes;
208         return 0;
209 }
210
211 static int mpol_new_preferred(struct mempolicy *pol, const nodemask_t *nodes)
212 {
213         if (nodes_empty(*nodes))
214                 return -EINVAL;
215
216         nodes_clear(pol->nodes);
217         node_set(first_node(*nodes), pol->nodes);
218         return 0;
219 }
220
221 /*
222  * mpol_set_nodemask is called after mpol_new() to set up the nodemask, if
223  * any, for the new policy.  mpol_new() has already validated the nodes
224  * parameter with respect to the policy mode and flags.
225  *
226  * Must be called holding task's alloc_lock to protect task's mems_allowed
227  * and mempolicy.  May also be called holding the mmap_lock for write.
228  */
229 static int mpol_set_nodemask(struct mempolicy *pol,
230                      const nodemask_t *nodes, struct nodemask_scratch *nsc)
231 {
232         int ret;
233
234         /*
235          * Default (pol==NULL) resp. local memory policies are not a
236          * subject of any remapping. They also do not need any special
237          * constructor.
238          */
239         if (!pol || pol->mode == MPOL_LOCAL)
240                 return 0;
241
242         /* Check N_MEMORY */
243         nodes_and(nsc->mask1,
244                   cpuset_current_mems_allowed, node_states[N_MEMORY]);
245
246         VM_BUG_ON(!nodes);
247
248         if (pol->flags & MPOL_F_RELATIVE_NODES)
249                 mpol_relative_nodemask(&nsc->mask2, nodes, &nsc->mask1);
250         else
251                 nodes_and(nsc->mask2, *nodes, nsc->mask1);
252
253         if (mpol_store_user_nodemask(pol))
254                 pol->w.user_nodemask = *nodes;
255         else
256                 pol->w.cpuset_mems_allowed = cpuset_current_mems_allowed;
257
258         ret = mpol_ops[pol->mode].create(pol, &nsc->mask2);
259         return ret;
260 }
261
262 /*
263  * This function just creates a new policy, does some check and simple
264  * initialization. You must invoke mpol_set_nodemask() to set nodes.
265  */
266 static struct mempolicy *mpol_new(unsigned short mode, unsigned short flags,
267                                   nodemask_t *nodes)
268 {
269         struct mempolicy *policy;
270
271         if (mode == MPOL_DEFAULT) {
272                 if (nodes && !nodes_empty(*nodes))
273                         return ERR_PTR(-EINVAL);
274                 return NULL;
275         }
276         VM_BUG_ON(!nodes);
277
278         /*
279          * MPOL_PREFERRED cannot be used with MPOL_F_STATIC_NODES or
280          * MPOL_F_RELATIVE_NODES if the nodemask is empty (local allocation).
281          * All other modes require a valid pointer to a non-empty nodemask.
282          */
283         if (mode == MPOL_PREFERRED) {
284                 if (nodes_empty(*nodes)) {
285                         if (((flags & MPOL_F_STATIC_NODES) ||
286                              (flags & MPOL_F_RELATIVE_NODES)))
287                                 return ERR_PTR(-EINVAL);
288
289                         mode = MPOL_LOCAL;
290                 }
291         } else if (mode == MPOL_LOCAL) {
292                 if (!nodes_empty(*nodes) ||
293                     (flags & MPOL_F_STATIC_NODES) ||
294                     (flags & MPOL_F_RELATIVE_NODES))
295                         return ERR_PTR(-EINVAL);
296         } else if (nodes_empty(*nodes))
297                 return ERR_PTR(-EINVAL);
298
299         policy = kmem_cache_alloc(policy_cache, GFP_KERNEL);
300         if (!policy)
301                 return ERR_PTR(-ENOMEM);
302         atomic_set(&policy->refcnt, 1);
303         policy->mode = mode;
304         policy->flags = flags;
305         policy->home_node = NUMA_NO_NODE;
306
307         return policy;
308 }
309
310 /* Slow path of a mpol destructor. */
311 void __mpol_put(struct mempolicy *pol)
312 {
313         if (!atomic_dec_and_test(&pol->refcnt))
314                 return;
315         kmem_cache_free(policy_cache, pol);
316 }
317
318 static void mpol_rebind_default(struct mempolicy *pol, const nodemask_t *nodes)
319 {
320 }
321
322 static void mpol_rebind_nodemask(struct mempolicy *pol, const nodemask_t *nodes)
323 {
324         nodemask_t tmp;
325
326         if (pol->flags & MPOL_F_STATIC_NODES)
327                 nodes_and(tmp, pol->w.user_nodemask, *nodes);
328         else if (pol->flags & MPOL_F_RELATIVE_NODES)
329                 mpol_relative_nodemask(&tmp, &pol->w.user_nodemask, nodes);
330         else {
331                 nodes_remap(tmp, pol->nodes, pol->w.cpuset_mems_allowed,
332                                                                 *nodes);
333                 pol->w.cpuset_mems_allowed = *nodes;
334         }
335
336         if (nodes_empty(tmp))
337                 tmp = *nodes;
338
339         pol->nodes = tmp;
340 }
341
342 static void mpol_rebind_preferred(struct mempolicy *pol,
343                                                 const nodemask_t *nodes)
344 {
345         pol->w.cpuset_mems_allowed = *nodes;
346 }
347
348 /*
349  * mpol_rebind_policy - Migrate a policy to a different set of nodes
350  *
351  * Per-vma policies are protected by mmap_lock. Allocations using per-task
352  * policies are protected by task->mems_allowed_seq to prevent a premature
353  * OOM/allocation failure due to parallel nodemask modification.
354  */
355 static void mpol_rebind_policy(struct mempolicy *pol, const nodemask_t *newmask)
356 {
357         if (!pol || pol->mode == MPOL_LOCAL)
358                 return;
359         if (!mpol_store_user_nodemask(pol) &&
360             nodes_equal(pol->w.cpuset_mems_allowed, *newmask))
361                 return;
362
363         mpol_ops[pol->mode].rebind(pol, newmask);
364 }
365
366 /*
367  * Wrapper for mpol_rebind_policy() that just requires task
368  * pointer, and updates task mempolicy.
369  *
370  * Called with task's alloc_lock held.
371  */
372 void mpol_rebind_task(struct task_struct *tsk, const nodemask_t *new)
373 {
374         mpol_rebind_policy(tsk->mempolicy, new);
375 }
376
377 /*
378  * Rebind each vma in mm to new nodemask.
379  *
380  * Call holding a reference to mm.  Takes mm->mmap_lock during call.
381  */
382 void mpol_rebind_mm(struct mm_struct *mm, nodemask_t *new)
383 {
384         struct vm_area_struct *vma;
385         VMA_ITERATOR(vmi, mm, 0);
386
387         mmap_write_lock(mm);
388         for_each_vma(vmi, vma) {
389                 vma_start_write(vma);
390                 mpol_rebind_policy(vma->vm_policy, new);
391         }
392         mmap_write_unlock(mm);
393 }
394
395 static const struct mempolicy_operations mpol_ops[MPOL_MAX] = {
396         [MPOL_DEFAULT] = {
397                 .rebind = mpol_rebind_default,
398         },
399         [MPOL_INTERLEAVE] = {
400                 .create = mpol_new_nodemask,
401                 .rebind = mpol_rebind_nodemask,
402         },
403         [MPOL_PREFERRED] = {
404                 .create = mpol_new_preferred,
405                 .rebind = mpol_rebind_preferred,
406         },
407         [MPOL_BIND] = {
408                 .create = mpol_new_nodemask,
409                 .rebind = mpol_rebind_nodemask,
410         },
411         [MPOL_LOCAL] = {
412                 .rebind = mpol_rebind_default,
413         },
414         [MPOL_PREFERRED_MANY] = {
415                 .create = mpol_new_nodemask,
416                 .rebind = mpol_rebind_preferred,
417         },
418 };
419
420 static bool migrate_folio_add(struct folio *folio, struct list_head *foliolist,
421                                 unsigned long flags);
422 static nodemask_t *policy_nodemask(gfp_t gfp, struct mempolicy *pol,
423                                 pgoff_t ilx, int *nid);
424
425 static bool strictly_unmovable(unsigned long flags)
426 {
427         /*
428          * STRICT without MOVE flags lets do_mbind() fail immediately with -EIO
429          * if any misplaced page is found.
430          */
431         return (flags & (MPOL_MF_STRICT | MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) ==
432                          MPOL_MF_STRICT;
433 }
434
435 struct migration_mpol {         /* for alloc_migration_target_by_mpol() */
436         struct mempolicy *pol;
437         pgoff_t ilx;
438 };
439
440 struct queue_pages {
441         struct list_head *pagelist;
442         unsigned long flags;
443         nodemask_t *nmask;
444         unsigned long start;
445         unsigned long end;
446         struct vm_area_struct *first;
447         struct folio *large;            /* note last large folio encountered */
448         long nr_failed;                 /* could not be isolated at this time */
449 };
450
451 /*
452  * Check if the folio's nid is in qp->nmask.
453  *
454  * If MPOL_MF_INVERT is set in qp->flags, check if the nid is
455  * in the invert of qp->nmask.
456  */
457 static inline bool queue_folio_required(struct folio *folio,
458                                         struct queue_pages *qp)
459 {
460         int nid = folio_nid(folio);
461         unsigned long flags = qp->flags;
462
463         return node_isset(nid, *qp->nmask) == !(flags & MPOL_MF_INVERT);
464 }
465
466 static void queue_folios_pmd(pmd_t *pmd, struct mm_walk *walk)
467 {
468         struct folio *folio;
469         struct queue_pages *qp = walk->private;
470
471         if (unlikely(is_pmd_migration_entry(*pmd))) {
472                 qp->nr_failed++;
473                 return;
474         }
475         folio = pfn_folio(pmd_pfn(*pmd));
476         if (is_huge_zero_page(&folio->page)) {
477                 walk->action = ACTION_CONTINUE;
478                 return;
479         }
480         if (!queue_folio_required(folio, qp))
481                 return;
482         if (!(qp->flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) ||
483             !vma_migratable(walk->vma) ||
484             !migrate_folio_add(folio, qp->pagelist, qp->flags))
485                 qp->nr_failed++;
486 }
487
488 /*
489  * Scan through folios, checking if they satisfy the required conditions,
490  * moving them from LRU to local pagelist for migration if they do (or not).
491  *
492  * queue_folios_pte_range() has two possible return values:
493  * 0 - continue walking to scan for more, even if an existing folio on the
494  *     wrong node could not be isolated and queued for migration.
495  * -EIO - only MPOL_MF_STRICT was specified, without MPOL_MF_MOVE or ..._ALL,
496  *        and an existing folio was on a node that does not follow the policy.
497  */
498 static int queue_folios_pte_range(pmd_t *pmd, unsigned long addr,
499                         unsigned long end, struct mm_walk *walk)
500 {
501         struct vm_area_struct *vma = walk->vma;
502         struct folio *folio;
503         struct queue_pages *qp = walk->private;
504         unsigned long flags = qp->flags;
505         pte_t *pte, *mapped_pte;
506         pte_t ptent;
507         spinlock_t *ptl;
508
509         ptl = pmd_trans_huge_lock(pmd, vma);
510         if (ptl) {
511                 queue_folios_pmd(pmd, walk);
512                 spin_unlock(ptl);
513                 goto out;
514         }
515
516         mapped_pte = pte = pte_offset_map_lock(walk->mm, pmd, addr, &ptl);
517         if (!pte) {
518                 walk->action = ACTION_AGAIN;
519                 return 0;
520         }
521         for (; addr != end; pte++, addr += PAGE_SIZE) {
522                 ptent = ptep_get(pte);
523                 if (pte_none(ptent))
524                         continue;
525                 if (!pte_present(ptent)) {
526                         if (is_migration_entry(pte_to_swp_entry(ptent)))
527                                 qp->nr_failed++;
528                         continue;
529                 }
530                 folio = vm_normal_folio(vma, addr, ptent);
531                 if (!folio || folio_is_zone_device(folio))
532                         continue;
533                 /*
534                  * vm_normal_folio() filters out zero pages, but there might
535                  * still be reserved folios to skip, perhaps in a VDSO.
536                  */
537                 if (folio_test_reserved(folio))
538                         continue;
539                 if (!queue_folio_required(folio, qp))
540                         continue;
541                 if (folio_test_large(folio)) {
542                         /*
543                          * A large folio can only be isolated from LRU once,
544                          * but may be mapped by many PTEs (and Copy-On-Write may
545                          * intersperse PTEs of other, order 0, folios).  This is
546                          * a common case, so don't mistake it for failure (but
547                          * there can be other cases of multi-mapped pages which
548                          * this quick check does not help to filter out - and a
549                          * search of the pagelist might grow to be prohibitive).
550                          *
551                          * migrate_pages(&pagelist) returns nr_failed folios, so
552                          * check "large" now so that queue_pages_range() returns
553                          * a comparable nr_failed folios.  This does imply that
554                          * if folio could not be isolated for some racy reason
555                          * at its first PTE, later PTEs will not give it another
556                          * chance of isolation; but keeps the accounting simple.
557                          */
558                         if (folio == qp->large)
559                                 continue;
560                         qp->large = folio;
561                 }
562                 if (!(flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) ||
563                     !vma_migratable(vma) ||
564                     !migrate_folio_add(folio, qp->pagelist, flags)) {
565                         qp->nr_failed++;
566                         if (strictly_unmovable(flags))
567                                 break;
568                 }
569         }
570         pte_unmap_unlock(mapped_pte, ptl);
571         cond_resched();
572 out:
573         if (qp->nr_failed && strictly_unmovable(flags))
574                 return -EIO;
575         return 0;
576 }
577
578 static int queue_folios_hugetlb(pte_t *pte, unsigned long hmask,
579                                unsigned long addr, unsigned long end,
580                                struct mm_walk *walk)
581 {
582 #ifdef CONFIG_HUGETLB_PAGE
583         struct queue_pages *qp = walk->private;
584         unsigned long flags = qp->flags;
585         struct folio *folio;
586         spinlock_t *ptl;
587         pte_t entry;
588
589         ptl = huge_pte_lock(hstate_vma(walk->vma), walk->mm, pte);
590         entry = huge_ptep_get(pte);
591         if (!pte_present(entry)) {
592                 if (unlikely(is_hugetlb_entry_migration(entry)))
593                         qp->nr_failed++;
594                 goto unlock;
595         }
596         folio = pfn_folio(pte_pfn(entry));
597         if (!queue_folio_required(folio, qp))
598                 goto unlock;
599         if (!(flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) ||
600             !vma_migratable(walk->vma)) {
601                 qp->nr_failed++;
602                 goto unlock;
603         }
604         /*
605          * Unless MPOL_MF_MOVE_ALL, we try to avoid migrating a shared folio.
606          * Choosing not to migrate a shared folio is not counted as a failure.
607          *
608          * To check if the folio is shared, ideally we want to make sure
609          * every page is mapped to the same process. Doing that is very
610          * expensive, so check the estimated sharers of the folio instead.
611          */
612         if ((flags & MPOL_MF_MOVE_ALL) ||
613             (folio_estimated_sharers(folio) == 1 && !hugetlb_pmd_shared(pte)))
614                 if (!isolate_hugetlb(folio, qp->pagelist))
615                         qp->nr_failed++;
616 unlock:
617         spin_unlock(ptl);
618         if (qp->nr_failed && strictly_unmovable(flags))
619                 return -EIO;
620 #endif
621         return 0;
622 }
623
624 #ifdef CONFIG_NUMA_BALANCING
625 /*
626  * This is used to mark a range of virtual addresses to be inaccessible.
627  * These are later cleared by a NUMA hinting fault. Depending on these
628  * faults, pages may be migrated for better NUMA placement.
629  *
630  * This is assuming that NUMA faults are handled using PROT_NONE. If
631  * an architecture makes a different choice, it will need further
632  * changes to the core.
633  */
634 unsigned long change_prot_numa(struct vm_area_struct *vma,
635                         unsigned long addr, unsigned long end)
636 {
637         struct mmu_gather tlb;
638         long nr_updated;
639
640         tlb_gather_mmu(&tlb, vma->vm_mm);
641
642         nr_updated = change_protection(&tlb, vma, addr, end, MM_CP_PROT_NUMA);
643         if (nr_updated > 0)
644                 count_vm_numa_events(NUMA_PTE_UPDATES, nr_updated);
645
646         tlb_finish_mmu(&tlb);
647
648         return nr_updated;
649 }
650 #endif /* CONFIG_NUMA_BALANCING */
651
652 static int queue_pages_test_walk(unsigned long start, unsigned long end,
653                                 struct mm_walk *walk)
654 {
655         struct vm_area_struct *next, *vma = walk->vma;
656         struct queue_pages *qp = walk->private;
657         unsigned long endvma = vma->vm_end;
658         unsigned long flags = qp->flags;
659
660         /* range check first */
661         VM_BUG_ON_VMA(!range_in_vma(vma, start, end), vma);
662
663         if (!qp->first) {
664                 qp->first = vma;
665                 if (!(flags & MPOL_MF_DISCONTIG_OK) &&
666                         (qp->start < vma->vm_start))
667                         /* hole at head side of range */
668                         return -EFAULT;
669         }
670         next = find_vma(vma->vm_mm, vma->vm_end);
671         if (!(flags & MPOL_MF_DISCONTIG_OK) &&
672                 ((vma->vm_end < qp->end) &&
673                 (!next || vma->vm_end < next->vm_start)))
674                 /* hole at middle or tail of range */
675                 return -EFAULT;
676
677         /*
678          * Need check MPOL_MF_STRICT to return -EIO if possible
679          * regardless of vma_migratable
680          */
681         if (!vma_migratable(vma) &&
682             !(flags & MPOL_MF_STRICT))
683                 return 1;
684
685         if (endvma > end)
686                 endvma = end;
687
688         /*
689          * Check page nodes, and queue pages to move, in the current vma.
690          * But if no moving, and no strict checking, the scan can be skipped.
691          */
692         if (flags & (MPOL_MF_STRICT | MPOL_MF_MOVE | MPOL_MF_MOVE_ALL))
693                 return 0;
694         return 1;
695 }
696
697 static const struct mm_walk_ops queue_pages_walk_ops = {
698         .hugetlb_entry          = queue_folios_hugetlb,
699         .pmd_entry              = queue_folios_pte_range,
700         .test_walk              = queue_pages_test_walk,
701         .walk_lock              = PGWALK_RDLOCK,
702 };
703
704 static const struct mm_walk_ops queue_pages_lock_vma_walk_ops = {
705         .hugetlb_entry          = queue_folios_hugetlb,
706         .pmd_entry              = queue_folios_pte_range,
707         .test_walk              = queue_pages_test_walk,
708         .walk_lock              = PGWALK_WRLOCK,
709 };
710
711 /*
712  * Walk through page tables and collect pages to be migrated.
713  *
714  * If pages found in a given range are not on the required set of @nodes,
715  * and migration is allowed, they are isolated and queued to @pagelist.
716  *
717  * queue_pages_range() may return:
718  * 0 - all pages already on the right node, or successfully queued for moving
719  *     (or neither strict checking nor moving requested: only range checking).
720  * >0 - this number of misplaced folios could not be queued for moving
721  *      (a hugetlbfs page or a transparent huge page being counted as 1).
722  * -EIO - a misplaced page found, when MPOL_MF_STRICT specified without MOVEs.
723  * -EFAULT - a hole in the memory range, when MPOL_MF_DISCONTIG_OK unspecified.
724  */
725 static long
726 queue_pages_range(struct mm_struct *mm, unsigned long start, unsigned long end,
727                 nodemask_t *nodes, unsigned long flags,
728                 struct list_head *pagelist)
729 {
730         int err;
731         struct queue_pages qp = {
732                 .pagelist = pagelist,
733                 .flags = flags,
734                 .nmask = nodes,
735                 .start = start,
736                 .end = end,
737                 .first = NULL,
738         };
739         const struct mm_walk_ops *ops = (flags & MPOL_MF_WRLOCK) ?
740                         &queue_pages_lock_vma_walk_ops : &queue_pages_walk_ops;
741
742         err = walk_page_range(mm, start, end, ops, &qp);
743
744         if (!qp.first)
745                 /* whole range in hole */
746                 err = -EFAULT;
747
748         return err ? : qp.nr_failed;
749 }
750
751 /*
752  * Apply policy to a single VMA
753  * This must be called with the mmap_lock held for writing.
754  */
755 static int vma_replace_policy(struct vm_area_struct *vma,
756                                 struct mempolicy *pol)
757 {
758         int err;
759         struct mempolicy *old;
760         struct mempolicy *new;
761
762         vma_assert_write_locked(vma);
763
764         new = mpol_dup(pol);
765         if (IS_ERR(new))
766                 return PTR_ERR(new);
767
768         if (vma->vm_ops && vma->vm_ops->set_policy) {
769                 err = vma->vm_ops->set_policy(vma, new);
770                 if (err)
771                         goto err_out;
772         }
773
774         old = vma->vm_policy;
775         vma->vm_policy = new; /* protected by mmap_lock */
776         mpol_put(old);
777
778         return 0;
779  err_out:
780         mpol_put(new);
781         return err;
782 }
783
784 /* Split or merge the VMA (if required) and apply the new policy */
785 static int mbind_range(struct vma_iterator *vmi, struct vm_area_struct *vma,
786                 struct vm_area_struct **prev, unsigned long start,
787                 unsigned long end, struct mempolicy *new_pol)
788 {
789         unsigned long vmstart, vmend;
790
791         vmend = min(end, vma->vm_end);
792         if (start > vma->vm_start) {
793                 *prev = vma;
794                 vmstart = start;
795         } else {
796                 vmstart = vma->vm_start;
797         }
798
799         if (mpol_equal(vma->vm_policy, new_pol)) {
800                 *prev = vma;
801                 return 0;
802         }
803
804         vma =  vma_modify_policy(vmi, *prev, vma, vmstart, vmend, new_pol);
805         if (IS_ERR(vma))
806                 return PTR_ERR(vma);
807
808         *prev = vma;
809         return vma_replace_policy(vma, new_pol);
810 }
811
812 /* Set the process memory policy */
813 static long do_set_mempolicy(unsigned short mode, unsigned short flags,
814                              nodemask_t *nodes)
815 {
816         struct mempolicy *new, *old;
817         NODEMASK_SCRATCH(scratch);
818         int ret;
819
820         if (!scratch)
821                 return -ENOMEM;
822
823         new = mpol_new(mode, flags, nodes);
824         if (IS_ERR(new)) {
825                 ret = PTR_ERR(new);
826                 goto out;
827         }
828
829         task_lock(current);
830         ret = mpol_set_nodemask(new, nodes, scratch);
831         if (ret) {
832                 task_unlock(current);
833                 mpol_put(new);
834                 goto out;
835         }
836
837         old = current->mempolicy;
838         current->mempolicy = new;
839         if (new && new->mode == MPOL_INTERLEAVE)
840                 current->il_prev = MAX_NUMNODES-1;
841         task_unlock(current);
842         mpol_put(old);
843         ret = 0;
844 out:
845         NODEMASK_SCRATCH_FREE(scratch);
846         return ret;
847 }
848
849 /*
850  * Return nodemask for policy for get_mempolicy() query
851  *
852  * Called with task's alloc_lock held
853  */
854 static void get_policy_nodemask(struct mempolicy *pol, nodemask_t *nodes)
855 {
856         nodes_clear(*nodes);
857         if (pol == &default_policy)
858                 return;
859
860         switch (pol->mode) {
861         case MPOL_BIND:
862         case MPOL_INTERLEAVE:
863         case MPOL_PREFERRED:
864         case MPOL_PREFERRED_MANY:
865                 *nodes = pol->nodes;
866                 break;
867         case MPOL_LOCAL:
868                 /* return empty node mask for local allocation */
869                 break;
870         default:
871                 BUG();
872         }
873 }
874
875 static int lookup_node(struct mm_struct *mm, unsigned long addr)
876 {
877         struct page *p = NULL;
878         int ret;
879
880         ret = get_user_pages_fast(addr & PAGE_MASK, 1, 0, &p);
881         if (ret > 0) {
882                 ret = page_to_nid(p);
883                 put_page(p);
884         }
885         return ret;
886 }
887
888 /* Retrieve NUMA policy */
889 static long do_get_mempolicy(int *policy, nodemask_t *nmask,
890                              unsigned long addr, unsigned long flags)
891 {
892         int err;
893         struct mm_struct *mm = current->mm;
894         struct vm_area_struct *vma = NULL;
895         struct mempolicy *pol = current->mempolicy, *pol_refcount = NULL;
896
897         if (flags &
898                 ~(unsigned long)(MPOL_F_NODE|MPOL_F_ADDR|MPOL_F_MEMS_ALLOWED))
899                 return -EINVAL;
900
901         if (flags & MPOL_F_MEMS_ALLOWED) {
902                 if (flags & (MPOL_F_NODE|MPOL_F_ADDR))
903                         return -EINVAL;
904                 *policy = 0;    /* just so it's initialized */
905                 task_lock(current);
906                 *nmask  = cpuset_current_mems_allowed;
907                 task_unlock(current);
908                 return 0;
909         }
910
911         if (flags & MPOL_F_ADDR) {
912                 pgoff_t ilx;            /* ignored here */
913                 /*
914                  * Do NOT fall back to task policy if the
915                  * vma/shared policy at addr is NULL.  We
916                  * want to return MPOL_DEFAULT in this case.
917                  */
918                 mmap_read_lock(mm);
919                 vma = vma_lookup(mm, addr);
920                 if (!vma) {
921                         mmap_read_unlock(mm);
922                         return -EFAULT;
923                 }
924                 pol = __get_vma_policy(vma, addr, &ilx);
925         } else if (addr)
926                 return -EINVAL;
927
928         if (!pol)
929                 pol = &default_policy;  /* indicates default behavior */
930
931         if (flags & MPOL_F_NODE) {
932                 if (flags & MPOL_F_ADDR) {
933                         /*
934                          * Take a refcount on the mpol, because we are about to
935                          * drop the mmap_lock, after which only "pol" remains
936                          * valid, "vma" is stale.
937                          */
938                         pol_refcount = pol;
939                         vma = NULL;
940                         mpol_get(pol);
941                         mmap_read_unlock(mm);
942                         err = lookup_node(mm, addr);
943                         if (err < 0)
944                                 goto out;
945                         *policy = err;
946                 } else if (pol == current->mempolicy &&
947                                 pol->mode == MPOL_INTERLEAVE) {
948                         *policy = next_node_in(current->il_prev, pol->nodes);
949                 } else {
950                         err = -EINVAL;
951                         goto out;
952                 }
953         } else {
954                 *policy = pol == &default_policy ? MPOL_DEFAULT :
955                                                 pol->mode;
956                 /*
957                  * Internal mempolicy flags must be masked off before exposing
958                  * the policy to userspace.
959                  */
960                 *policy |= (pol->flags & MPOL_MODE_FLAGS);
961         }
962
963         err = 0;
964         if (nmask) {
965                 if (mpol_store_user_nodemask(pol)) {
966                         *nmask = pol->w.user_nodemask;
967                 } else {
968                         task_lock(current);
969                         get_policy_nodemask(pol, nmask);
970                         task_unlock(current);
971                 }
972         }
973
974  out:
975         mpol_cond_put(pol);
976         if (vma)
977                 mmap_read_unlock(mm);
978         if (pol_refcount)
979                 mpol_put(pol_refcount);
980         return err;
981 }
982
983 #ifdef CONFIG_MIGRATION
984 static bool migrate_folio_add(struct folio *folio, struct list_head *foliolist,
985                                 unsigned long flags)
986 {
987         /*
988          * Unless MPOL_MF_MOVE_ALL, we try to avoid migrating a shared folio.
989          * Choosing not to migrate a shared folio is not counted as a failure.
990          *
991          * To check if the folio is shared, ideally we want to make sure
992          * every page is mapped to the same process. Doing that is very
993          * expensive, so check the estimated sharers of the folio instead.
994          */
995         if ((flags & MPOL_MF_MOVE_ALL) || folio_estimated_sharers(folio) == 1) {
996                 if (folio_isolate_lru(folio)) {
997                         list_add_tail(&folio->lru, foliolist);
998                         node_stat_mod_folio(folio,
999                                 NR_ISOLATED_ANON + folio_is_file_lru(folio),
1000                                 folio_nr_pages(folio));
1001                 } else {
1002                         /*
1003                          * Non-movable folio may reach here.  And, there may be
1004                          * temporary off LRU folios or non-LRU movable folios.
1005                          * Treat them as unmovable folios since they can't be
1006                          * isolated, so they can't be moved at the moment.
1007                          */
1008                         return false;
1009                 }
1010         }
1011         return true;
1012 }
1013
1014 /*
1015  * Migrate pages from one node to a target node.
1016  * Returns error or the number of pages not migrated.
1017  */
1018 static long migrate_to_node(struct mm_struct *mm, int source, int dest,
1019                             int flags)
1020 {
1021         nodemask_t nmask;
1022         struct vm_area_struct *vma;
1023         LIST_HEAD(pagelist);
1024         long nr_failed;
1025         long err = 0;
1026         struct migration_target_control mtc = {
1027                 .nid = dest,
1028                 .gfp_mask = GFP_HIGHUSER_MOVABLE | __GFP_THISNODE,
1029         };
1030
1031         nodes_clear(nmask);
1032         node_set(source, nmask);
1033
1034         VM_BUG_ON(!(flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)));
1035
1036         mmap_read_lock(mm);
1037         vma = find_vma(mm, 0);
1038
1039         /*
1040          * This does not migrate the range, but isolates all pages that
1041          * need migration.  Between passing in the full user address
1042          * space range and MPOL_MF_DISCONTIG_OK, this call cannot fail,
1043          * but passes back the count of pages which could not be isolated.
1044          */
1045         nr_failed = queue_pages_range(mm, vma->vm_start, mm->task_size, &nmask,
1046                                       flags | MPOL_MF_DISCONTIG_OK, &pagelist);
1047         mmap_read_unlock(mm);
1048
1049         if (!list_empty(&pagelist)) {
1050                 err = migrate_pages(&pagelist, alloc_migration_target, NULL,
1051                         (unsigned long)&mtc, MIGRATE_SYNC, MR_SYSCALL, NULL);
1052                 if (err)
1053                         putback_movable_pages(&pagelist);
1054         }
1055
1056         if (err >= 0)
1057                 err += nr_failed;
1058         return err;
1059 }
1060
1061 /*
1062  * Move pages between the two nodesets so as to preserve the physical
1063  * layout as much as possible.
1064  *
1065  * Returns the number of page that could not be moved.
1066  */
1067 int do_migrate_pages(struct mm_struct *mm, const nodemask_t *from,
1068                      const nodemask_t *to, int flags)
1069 {
1070         long nr_failed = 0;
1071         long err = 0;
1072         nodemask_t tmp;
1073
1074         lru_cache_disable();
1075
1076         /*
1077          * Find a 'source' bit set in 'tmp' whose corresponding 'dest'
1078          * bit in 'to' is not also set in 'tmp'.  Clear the found 'source'
1079          * bit in 'tmp', and return that <source, dest> pair for migration.
1080          * The pair of nodemasks 'to' and 'from' define the map.
1081          *
1082          * If no pair of bits is found that way, fallback to picking some
1083          * pair of 'source' and 'dest' bits that are not the same.  If the
1084          * 'source' and 'dest' bits are the same, this represents a node
1085          * that will be migrating to itself, so no pages need move.
1086          *
1087          * If no bits are left in 'tmp', or if all remaining bits left
1088          * in 'tmp' correspond to the same bit in 'to', return false
1089          * (nothing left to migrate).
1090          *
1091          * This lets us pick a pair of nodes to migrate between, such that
1092          * if possible the dest node is not already occupied by some other
1093          * source node, minimizing the risk of overloading the memory on a
1094          * node that would happen if we migrated incoming memory to a node
1095          * before migrating outgoing memory source that same node.
1096          *
1097          * A single scan of tmp is sufficient.  As we go, we remember the
1098          * most recent <s, d> pair that moved (s != d).  If we find a pair
1099          * that not only moved, but what's better, moved to an empty slot
1100          * (d is not set in tmp), then we break out then, with that pair.
1101          * Otherwise when we finish scanning from_tmp, we at least have the
1102          * most recent <s, d> pair that moved.  If we get all the way through
1103          * the scan of tmp without finding any node that moved, much less
1104          * moved to an empty node, then there is nothing left worth migrating.
1105          */
1106
1107         tmp = *from;
1108         while (!nodes_empty(tmp)) {
1109                 int s, d;
1110                 int source = NUMA_NO_NODE;
1111                 int dest = 0;
1112
1113                 for_each_node_mask(s, tmp) {
1114
1115                         /*
1116                          * do_migrate_pages() tries to maintain the relative
1117                          * node relationship of the pages established between
1118                          * threads and memory areas.
1119                          *
1120                          * However if the number of source nodes is not equal to
1121                          * the number of destination nodes we can not preserve
1122                          * this node relative relationship.  In that case, skip
1123                          * copying memory from a node that is in the destination
1124                          * mask.
1125                          *
1126                          * Example: [2,3,4] -> [3,4,5] moves everything.
1127                          *          [0-7] - > [3,4,5] moves only 0,1,2,6,7.
1128                          */
1129
1130                         if ((nodes_weight(*from) != nodes_weight(*to)) &&
1131                                                 (node_isset(s, *to)))
1132                                 continue;
1133
1134                         d = node_remap(s, *from, *to);
1135                         if (s == d)
1136                                 continue;
1137
1138                         source = s;     /* Node moved. Memorize */
1139                         dest = d;
1140
1141                         /* dest not in remaining from nodes? */
1142                         if (!node_isset(dest, tmp))
1143                                 break;
1144                 }
1145                 if (source == NUMA_NO_NODE)
1146                         break;
1147
1148                 node_clear(source, tmp);
1149                 err = migrate_to_node(mm, source, dest, flags);
1150                 if (err > 0)
1151                         nr_failed += err;
1152                 if (err < 0)
1153                         break;
1154         }
1155
1156         lru_cache_enable();
1157         if (err < 0)
1158                 return err;
1159         return (nr_failed < INT_MAX) ? nr_failed : INT_MAX;
1160 }
1161
1162 /*
1163  * Allocate a new folio for page migration, according to NUMA mempolicy.
1164  */
1165 static struct folio *alloc_migration_target_by_mpol(struct folio *src,
1166                                                     unsigned long private)
1167 {
1168         struct migration_mpol *mmpol = (struct migration_mpol *)private;
1169         struct mempolicy *pol = mmpol->pol;
1170         pgoff_t ilx = mmpol->ilx;
1171         struct page *page;
1172         unsigned int order;
1173         int nid = numa_node_id();
1174         gfp_t gfp;
1175
1176         order = folio_order(src);
1177         ilx += src->index >> order;
1178
1179         if (folio_test_hugetlb(src)) {
1180                 nodemask_t *nodemask;
1181                 struct hstate *h;
1182
1183                 h = folio_hstate(src);
1184                 gfp = htlb_alloc_mask(h);
1185                 nodemask = policy_nodemask(gfp, pol, ilx, &nid);
1186                 return alloc_hugetlb_folio_nodemask(h, nid, nodemask, gfp);
1187         }
1188
1189         if (folio_test_large(src))
1190                 gfp = GFP_TRANSHUGE;
1191         else
1192                 gfp = GFP_HIGHUSER_MOVABLE | __GFP_RETRY_MAYFAIL | __GFP_COMP;
1193
1194         page = alloc_pages_mpol(gfp, order, pol, ilx, nid);
1195         return page_rmappable_folio(page);
1196 }
1197 #else
1198
1199 static bool migrate_folio_add(struct folio *folio, struct list_head *foliolist,
1200                                 unsigned long flags)
1201 {
1202         return false;
1203 }
1204
1205 int do_migrate_pages(struct mm_struct *mm, const nodemask_t *from,
1206                      const nodemask_t *to, int flags)
1207 {
1208         return -ENOSYS;
1209 }
1210
1211 static struct folio *alloc_migration_target_by_mpol(struct folio *src,
1212                                                     unsigned long private)
1213 {
1214         return NULL;
1215 }
1216 #endif
1217
1218 static long do_mbind(unsigned long start, unsigned long len,
1219                      unsigned short mode, unsigned short mode_flags,
1220                      nodemask_t *nmask, unsigned long flags)
1221 {
1222         struct mm_struct *mm = current->mm;
1223         struct vm_area_struct *vma, *prev;
1224         struct vma_iterator vmi;
1225         struct migration_mpol mmpol;
1226         struct mempolicy *new;
1227         unsigned long end;
1228         long err;
1229         long nr_failed;
1230         LIST_HEAD(pagelist);
1231
1232         if (flags & ~(unsigned long)MPOL_MF_VALID)
1233                 return -EINVAL;
1234         if ((flags & MPOL_MF_MOVE_ALL) && !capable(CAP_SYS_NICE))
1235                 return -EPERM;
1236
1237         if (start & ~PAGE_MASK)
1238                 return -EINVAL;
1239
1240         if (mode == MPOL_DEFAULT)
1241                 flags &= ~MPOL_MF_STRICT;
1242
1243         len = PAGE_ALIGN(len);
1244         end = start + len;
1245
1246         if (end < start)
1247                 return -EINVAL;
1248         if (end == start)
1249                 return 0;
1250
1251         new = mpol_new(mode, mode_flags, nmask);
1252         if (IS_ERR(new))
1253                 return PTR_ERR(new);
1254
1255         /*
1256          * If we are using the default policy then operation
1257          * on discontinuous address spaces is okay after all
1258          */
1259         if (!new)
1260                 flags |= MPOL_MF_DISCONTIG_OK;
1261
1262         if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL))
1263                 lru_cache_disable();
1264         {
1265                 NODEMASK_SCRATCH(scratch);
1266                 if (scratch) {
1267                         mmap_write_lock(mm);
1268                         err = mpol_set_nodemask(new, nmask, scratch);
1269                         if (err)
1270                                 mmap_write_unlock(mm);
1271                 } else
1272                         err = -ENOMEM;
1273                 NODEMASK_SCRATCH_FREE(scratch);
1274         }
1275         if (err)
1276                 goto mpol_out;
1277
1278         /*
1279          * Lock the VMAs before scanning for pages to migrate,
1280          * to ensure we don't miss a concurrently inserted page.
1281          */
1282         nr_failed = queue_pages_range(mm, start, end, nmask,
1283                         flags | MPOL_MF_INVERT | MPOL_MF_WRLOCK, &pagelist);
1284
1285         if (nr_failed < 0) {
1286                 err = nr_failed;
1287                 nr_failed = 0;
1288         } else {
1289                 vma_iter_init(&vmi, mm, start);
1290                 prev = vma_prev(&vmi);
1291                 for_each_vma_range(vmi, vma, end) {
1292                         err = mbind_range(&vmi, vma, &prev, start, end, new);
1293                         if (err)
1294                                 break;
1295                 }
1296         }
1297
1298         if (!err && !list_empty(&pagelist)) {
1299                 /* Convert MPOL_DEFAULT's NULL to task or default policy */
1300                 if (!new) {
1301                         new = get_task_policy(current);
1302                         mpol_get(new);
1303                 }
1304                 mmpol.pol = new;
1305                 mmpol.ilx = 0;
1306
1307                 /*
1308                  * In the interleaved case, attempt to allocate on exactly the
1309                  * targeted nodes, for the first VMA to be migrated; for later
1310                  * VMAs, the nodes will still be interleaved from the targeted
1311                  * nodemask, but one by one may be selected differently.
1312                  */
1313                 if (new->mode == MPOL_INTERLEAVE) {
1314                         struct page *page;
1315                         unsigned int order;
1316                         unsigned long addr = -EFAULT;
1317
1318                         list_for_each_entry(page, &pagelist, lru) {
1319                                 if (!PageKsm(page))
1320                                         break;
1321                         }
1322                         if (!list_entry_is_head(page, &pagelist, lru)) {
1323                                 vma_iter_init(&vmi, mm, start);
1324                                 for_each_vma_range(vmi, vma, end) {
1325                                         addr = page_address_in_vma(page, vma);
1326                                         if (addr != -EFAULT)
1327                                                 break;
1328                                 }
1329                         }
1330                         if (addr != -EFAULT) {
1331                                 order = compound_order(page);
1332                                 /* We already know the pol, but not the ilx */
1333                                 mpol_cond_put(get_vma_policy(vma, addr, order,
1334                                                              &mmpol.ilx));
1335                                 /* Set base from which to increment by index */
1336                                 mmpol.ilx -= page->index >> order;
1337                         }
1338                 }
1339         }
1340
1341         mmap_write_unlock(mm);
1342
1343         if (!err && !list_empty(&pagelist)) {
1344                 nr_failed |= migrate_pages(&pagelist,
1345                                 alloc_migration_target_by_mpol, NULL,
1346                                 (unsigned long)&mmpol, MIGRATE_SYNC,
1347                                 MR_MEMPOLICY_MBIND, NULL);
1348         }
1349
1350         if (nr_failed && (flags & MPOL_MF_STRICT))
1351                 err = -EIO;
1352         if (!list_empty(&pagelist))
1353                 putback_movable_pages(&pagelist);
1354 mpol_out:
1355         mpol_put(new);
1356         if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL))
1357                 lru_cache_enable();
1358         return err;
1359 }
1360
1361 /*
1362  * User space interface with variable sized bitmaps for nodelists.
1363  */
1364 static int get_bitmap(unsigned long *mask, const unsigned long __user *nmask,
1365                       unsigned long maxnode)
1366 {
1367         unsigned long nlongs = BITS_TO_LONGS(maxnode);
1368         int ret;
1369
1370         if (in_compat_syscall())
1371                 ret = compat_get_bitmap(mask,
1372                                         (const compat_ulong_t __user *)nmask,
1373                                         maxnode);
1374         else
1375                 ret = copy_from_user(mask, nmask,
1376                                      nlongs * sizeof(unsigned long));
1377
1378         if (ret)
1379                 return -EFAULT;
1380
1381         if (maxnode % BITS_PER_LONG)
1382                 mask[nlongs - 1] &= (1UL << (maxnode % BITS_PER_LONG)) - 1;
1383
1384         return 0;
1385 }
1386
1387 /* Copy a node mask from user space. */
1388 static int get_nodes(nodemask_t *nodes, const unsigned long __user *nmask,
1389                      unsigned long maxnode)
1390 {
1391         --maxnode;
1392         nodes_clear(*nodes);
1393         if (maxnode == 0 || !nmask)
1394                 return 0;
1395         if (maxnode > PAGE_SIZE*BITS_PER_BYTE)
1396                 return -EINVAL;
1397
1398         /*
1399          * When the user specified more nodes than supported just check
1400          * if the non supported part is all zero, one word at a time,
1401          * starting at the end.
1402          */
1403         while (maxnode > MAX_NUMNODES) {
1404                 unsigned long bits = min_t(unsigned long, maxnode, BITS_PER_LONG);
1405                 unsigned long t;
1406
1407                 if (get_bitmap(&t, &nmask[(maxnode - 1) / BITS_PER_LONG], bits))
1408                         return -EFAULT;
1409
1410                 if (maxnode - bits >= MAX_NUMNODES) {
1411                         maxnode -= bits;
1412                 } else {
1413                         maxnode = MAX_NUMNODES;
1414                         t &= ~((1UL << (MAX_NUMNODES % BITS_PER_LONG)) - 1);
1415                 }
1416                 if (t)
1417                         return -EINVAL;
1418         }
1419
1420         return get_bitmap(nodes_addr(*nodes), nmask, maxnode);
1421 }
1422
1423 /* Copy a kernel node mask to user space */
1424 static int copy_nodes_to_user(unsigned long __user *mask, unsigned long maxnode,
1425                               nodemask_t *nodes)
1426 {
1427         unsigned long copy = ALIGN(maxnode-1, 64) / 8;
1428         unsigned int nbytes = BITS_TO_LONGS(nr_node_ids) * sizeof(long);
1429         bool compat = in_compat_syscall();
1430
1431         if (compat)
1432                 nbytes = BITS_TO_COMPAT_LONGS(nr_node_ids) * sizeof(compat_long_t);
1433
1434         if (copy > nbytes) {
1435                 if (copy > PAGE_SIZE)
1436                         return -EINVAL;
1437                 if (clear_user((char __user *)mask + nbytes, copy - nbytes))
1438                         return -EFAULT;
1439                 copy = nbytes;
1440                 maxnode = nr_node_ids;
1441         }
1442
1443         if (compat)
1444                 return compat_put_bitmap((compat_ulong_t __user *)mask,
1445                                          nodes_addr(*nodes), maxnode);
1446
1447         return copy_to_user(mask, nodes_addr(*nodes), copy) ? -EFAULT : 0;
1448 }
1449
1450 /* Basic parameter sanity check used by both mbind() and set_mempolicy() */
1451 static inline int sanitize_mpol_flags(int *mode, unsigned short *flags)
1452 {
1453         *flags = *mode & MPOL_MODE_FLAGS;
1454         *mode &= ~MPOL_MODE_FLAGS;
1455
1456         if ((unsigned int)(*mode) >=  MPOL_MAX)
1457                 return -EINVAL;
1458         if ((*flags & MPOL_F_STATIC_NODES) && (*flags & MPOL_F_RELATIVE_NODES))
1459                 return -EINVAL;
1460         if (*flags & MPOL_F_NUMA_BALANCING) {
1461                 if (*mode != MPOL_BIND)
1462                         return -EINVAL;
1463                 *flags |= (MPOL_F_MOF | MPOL_F_MORON);
1464         }
1465         return 0;
1466 }
1467
1468 static long kernel_mbind(unsigned long start, unsigned long len,
1469                          unsigned long mode, const unsigned long __user *nmask,
1470                          unsigned long maxnode, unsigned int flags)
1471 {
1472         unsigned short mode_flags;
1473         nodemask_t nodes;
1474         int lmode = mode;
1475         int err;
1476
1477         start = untagged_addr(start);
1478         err = sanitize_mpol_flags(&lmode, &mode_flags);
1479         if (err)
1480                 return err;
1481
1482         err = get_nodes(&nodes, nmask, maxnode);
1483         if (err)
1484                 return err;
1485
1486         return do_mbind(start, len, lmode, mode_flags, &nodes, flags);
1487 }
1488
1489 SYSCALL_DEFINE4(set_mempolicy_home_node, unsigned long, start, unsigned long, len,
1490                 unsigned long, home_node, unsigned long, flags)
1491 {
1492         struct mm_struct *mm = current->mm;
1493         struct vm_area_struct *vma, *prev;
1494         struct mempolicy *new, *old;
1495         unsigned long end;
1496         int err = -ENOENT;
1497         VMA_ITERATOR(vmi, mm, start);
1498
1499         start = untagged_addr(start);
1500         if (start & ~PAGE_MASK)
1501                 return -EINVAL;
1502         /*
1503          * flags is used for future extension if any.
1504          */
1505         if (flags != 0)
1506                 return -EINVAL;
1507
1508         /*
1509          * Check home_node is online to avoid accessing uninitialized
1510          * NODE_DATA.
1511          */
1512         if (home_node >= MAX_NUMNODES || !node_online(home_node))
1513                 return -EINVAL;
1514
1515         len = PAGE_ALIGN(len);
1516         end = start + len;
1517
1518         if (end < start)
1519                 return -EINVAL;
1520         if (end == start)
1521                 return 0;
1522         mmap_write_lock(mm);
1523         prev = vma_prev(&vmi);
1524         for_each_vma_range(vmi, vma, end) {
1525                 /*
1526                  * If any vma in the range got policy other than MPOL_BIND
1527                  * or MPOL_PREFERRED_MANY we return error. We don't reset
1528                  * the home node for vmas we already updated before.
1529                  */
1530                 old = vma_policy(vma);
1531                 if (!old) {
1532                         prev = vma;
1533                         continue;
1534                 }
1535                 if (old->mode != MPOL_BIND && old->mode != MPOL_PREFERRED_MANY) {
1536                         err = -EOPNOTSUPP;
1537                         break;
1538                 }
1539                 new = mpol_dup(old);
1540                 if (IS_ERR(new)) {
1541                         err = PTR_ERR(new);
1542                         break;
1543                 }
1544
1545                 vma_start_write(vma);
1546                 new->home_node = home_node;
1547                 err = mbind_range(&vmi, vma, &prev, start, end, new);
1548                 mpol_put(new);
1549                 if (err)
1550                         break;
1551         }
1552         mmap_write_unlock(mm);
1553         return err;
1554 }
1555
1556 SYSCALL_DEFINE6(mbind, unsigned long, start, unsigned long, len,
1557                 unsigned long, mode, const unsigned long __user *, nmask,
1558                 unsigned long, maxnode, unsigned int, flags)
1559 {
1560         return kernel_mbind(start, len, mode, nmask, maxnode, flags);
1561 }
1562
1563 /* Set the process memory policy */
1564 static long kernel_set_mempolicy(int mode, const unsigned long __user *nmask,
1565                                  unsigned long maxnode)
1566 {
1567         unsigned short mode_flags;
1568         nodemask_t nodes;
1569         int lmode = mode;
1570         int err;
1571
1572         err = sanitize_mpol_flags(&lmode, &mode_flags);
1573         if (err)
1574                 return err;
1575
1576         err = get_nodes(&nodes, nmask, maxnode);
1577         if (err)
1578                 return err;
1579
1580         return do_set_mempolicy(lmode, mode_flags, &nodes);
1581 }
1582
1583 SYSCALL_DEFINE3(set_mempolicy, int, mode, const unsigned long __user *, nmask,
1584                 unsigned long, maxnode)
1585 {
1586         return kernel_set_mempolicy(mode, nmask, maxnode);
1587 }
1588
1589 static int kernel_migrate_pages(pid_t pid, unsigned long maxnode,
1590                                 const unsigned long __user *old_nodes,
1591                                 const unsigned long __user *new_nodes)
1592 {
1593         struct mm_struct *mm = NULL;
1594         struct task_struct *task;
1595         nodemask_t task_nodes;
1596         int err;
1597         nodemask_t *old;
1598         nodemask_t *new;
1599         NODEMASK_SCRATCH(scratch);
1600
1601         if (!scratch)
1602                 return -ENOMEM;
1603
1604         old = &scratch->mask1;
1605         new = &scratch->mask2;
1606
1607         err = get_nodes(old, old_nodes, maxnode);
1608         if (err)
1609                 goto out;
1610
1611         err = get_nodes(new, new_nodes, maxnode);
1612         if (err)
1613                 goto out;
1614
1615         /* Find the mm_struct */
1616         rcu_read_lock();
1617         task = pid ? find_task_by_vpid(pid) : current;
1618         if (!task) {
1619                 rcu_read_unlock();
1620                 err = -ESRCH;
1621                 goto out;
1622         }
1623         get_task_struct(task);
1624
1625         err = -EINVAL;
1626
1627         /*
1628          * Check if this process has the right to modify the specified process.
1629          * Use the regular "ptrace_may_access()" checks.
1630          */
1631         if (!ptrace_may_access(task, PTRACE_MODE_READ_REALCREDS)) {
1632                 rcu_read_unlock();
1633                 err = -EPERM;
1634                 goto out_put;
1635         }
1636         rcu_read_unlock();
1637
1638         task_nodes = cpuset_mems_allowed(task);
1639         /* Is the user allowed to access the target nodes? */
1640         if (!nodes_subset(*new, task_nodes) && !capable(CAP_SYS_NICE)) {
1641                 err = -EPERM;
1642                 goto out_put;
1643         }
1644
1645         task_nodes = cpuset_mems_allowed(current);
1646         nodes_and(*new, *new, task_nodes);
1647         if (nodes_empty(*new))
1648                 goto out_put;
1649
1650         err = security_task_movememory(task);
1651         if (err)
1652                 goto out_put;
1653
1654         mm = get_task_mm(task);
1655         put_task_struct(task);
1656
1657         if (!mm) {
1658                 err = -EINVAL;
1659                 goto out;
1660         }
1661
1662         err = do_migrate_pages(mm, old, new,
1663                 capable(CAP_SYS_NICE) ? MPOL_MF_MOVE_ALL : MPOL_MF_MOVE);
1664
1665         mmput(mm);
1666 out:
1667         NODEMASK_SCRATCH_FREE(scratch);
1668
1669         return err;
1670
1671 out_put:
1672         put_task_struct(task);
1673         goto out;
1674 }
1675
1676 SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode,
1677                 const unsigned long __user *, old_nodes,
1678                 const unsigned long __user *, new_nodes)
1679 {
1680         return kernel_migrate_pages(pid, maxnode, old_nodes, new_nodes);
1681 }
1682
1683 /* Retrieve NUMA policy */
1684 static int kernel_get_mempolicy(int __user *policy,
1685                                 unsigned long __user *nmask,
1686                                 unsigned long maxnode,
1687                                 unsigned long addr,
1688                                 unsigned long flags)
1689 {
1690         int err;
1691         int pval;
1692         nodemask_t nodes;
1693
1694         if (nmask != NULL && maxnode < nr_node_ids)
1695                 return -EINVAL;
1696
1697         addr = untagged_addr(addr);
1698
1699         err = do_get_mempolicy(&pval, &nodes, addr, flags);
1700
1701         if (err)
1702                 return err;
1703
1704         if (policy && put_user(pval, policy))
1705                 return -EFAULT;
1706
1707         if (nmask)
1708                 err = copy_nodes_to_user(nmask, maxnode, &nodes);
1709
1710         return err;
1711 }
1712
1713 SYSCALL_DEFINE5(get_mempolicy, int __user *, policy,
1714                 unsigned long __user *, nmask, unsigned long, maxnode,
1715                 unsigned long, addr, unsigned long, flags)
1716 {
1717         return kernel_get_mempolicy(policy, nmask, maxnode, addr, flags);
1718 }
1719
1720 bool vma_migratable(struct vm_area_struct *vma)
1721 {
1722         if (vma->vm_flags & (VM_IO | VM_PFNMAP))
1723                 return false;
1724
1725         /*
1726          * DAX device mappings require predictable access latency, so avoid
1727          * incurring periodic faults.
1728          */
1729         if (vma_is_dax(vma))
1730                 return false;
1731
1732         if (is_vm_hugetlb_page(vma) &&
1733                 !hugepage_migration_supported(hstate_vma(vma)))
1734                 return false;
1735
1736         /*
1737          * Migration allocates pages in the highest zone. If we cannot
1738          * do so then migration (at least from node to node) is not
1739          * possible.
1740          */
1741         if (vma->vm_file &&
1742                 gfp_zone(mapping_gfp_mask(vma->vm_file->f_mapping))
1743                         < policy_zone)
1744                 return false;
1745         return true;
1746 }
1747
1748 struct mempolicy *__get_vma_policy(struct vm_area_struct *vma,
1749                                    unsigned long addr, pgoff_t *ilx)
1750 {
1751         *ilx = 0;
1752         return (vma->vm_ops && vma->vm_ops->get_policy) ?
1753                 vma->vm_ops->get_policy(vma, addr, ilx) : vma->vm_policy;
1754 }
1755
1756 /*
1757  * get_vma_policy(@vma, @addr, @order, @ilx)
1758  * @vma: virtual memory area whose policy is sought
1759  * @addr: address in @vma for shared policy lookup
1760  * @order: 0, or appropriate huge_page_order for interleaving
1761  * @ilx: interleave index (output), for use only when MPOL_INTERLEAVE
1762  *
1763  * Returns effective policy for a VMA at specified address.
1764  * Falls back to current->mempolicy or system default policy, as necessary.
1765  * Shared policies [those marked as MPOL_F_SHARED] require an extra reference
1766  * count--added by the get_policy() vm_op, as appropriate--to protect against
1767  * freeing by another task.  It is the caller's responsibility to free the
1768  * extra reference for shared policies.
1769  */
1770 struct mempolicy *get_vma_policy(struct vm_area_struct *vma,
1771                                  unsigned long addr, int order, pgoff_t *ilx)
1772 {
1773         struct mempolicy *pol;
1774
1775         pol = __get_vma_policy(vma, addr, ilx);
1776         if (!pol)
1777                 pol = get_task_policy(current);
1778         if (pol->mode == MPOL_INTERLEAVE) {
1779                 *ilx += vma->vm_pgoff >> order;
1780                 *ilx += (addr - vma->vm_start) >> (PAGE_SHIFT + order);
1781         }
1782         return pol;
1783 }
1784
1785 bool vma_policy_mof(struct vm_area_struct *vma)
1786 {
1787         struct mempolicy *pol;
1788
1789         if (vma->vm_ops && vma->vm_ops->get_policy) {
1790                 bool ret = false;
1791                 pgoff_t ilx;            /* ignored here */
1792
1793                 pol = vma->vm_ops->get_policy(vma, vma->vm_start, &ilx);
1794                 if (pol && (pol->flags & MPOL_F_MOF))
1795                         ret = true;
1796                 mpol_cond_put(pol);
1797
1798                 return ret;
1799         }
1800
1801         pol = vma->vm_policy;
1802         if (!pol)
1803                 pol = get_task_policy(current);
1804
1805         return pol->flags & MPOL_F_MOF;
1806 }
1807
1808 bool apply_policy_zone(struct mempolicy *policy, enum zone_type zone)
1809 {
1810         enum zone_type dynamic_policy_zone = policy_zone;
1811
1812         BUG_ON(dynamic_policy_zone == ZONE_MOVABLE);
1813
1814         /*
1815          * if policy->nodes has movable memory only,
1816          * we apply policy when gfp_zone(gfp) = ZONE_MOVABLE only.
1817          *
1818          * policy->nodes is intersect with node_states[N_MEMORY].
1819          * so if the following test fails, it implies
1820          * policy->nodes has movable memory only.
1821          */
1822         if (!nodes_intersects(policy->nodes, node_states[N_HIGH_MEMORY]))
1823                 dynamic_policy_zone = ZONE_MOVABLE;
1824
1825         return zone >= dynamic_policy_zone;
1826 }
1827
1828 /* Do dynamic interleaving for a process */
1829 static unsigned int interleave_nodes(struct mempolicy *policy)
1830 {
1831         unsigned int nid;
1832
1833         nid = next_node_in(current->il_prev, policy->nodes);
1834         if (nid < MAX_NUMNODES)
1835                 current->il_prev = nid;
1836         return nid;
1837 }
1838
1839 /*
1840  * Depending on the memory policy provide a node from which to allocate the
1841  * next slab entry.
1842  */
1843 unsigned int mempolicy_slab_node(void)
1844 {
1845         struct mempolicy *policy;
1846         int node = numa_mem_id();
1847
1848         if (!in_task())
1849                 return node;
1850
1851         policy = current->mempolicy;
1852         if (!policy)
1853                 return node;
1854
1855         switch (policy->mode) {
1856         case MPOL_PREFERRED:
1857                 return first_node(policy->nodes);
1858
1859         case MPOL_INTERLEAVE:
1860                 return interleave_nodes(policy);
1861
1862         case MPOL_BIND:
1863         case MPOL_PREFERRED_MANY:
1864         {
1865                 struct zoneref *z;
1866
1867                 /*
1868                  * Follow bind policy behavior and start allocation at the
1869                  * first node.
1870                  */
1871                 struct zonelist *zonelist;
1872                 enum zone_type highest_zoneidx = gfp_zone(GFP_KERNEL);
1873                 zonelist = &NODE_DATA(node)->node_zonelists[ZONELIST_FALLBACK];
1874                 z = first_zones_zonelist(zonelist, highest_zoneidx,
1875                                                         &policy->nodes);
1876                 return z->zone ? zone_to_nid(z->zone) : node;
1877         }
1878         case MPOL_LOCAL:
1879                 return node;
1880
1881         default:
1882                 BUG();
1883         }
1884 }
1885
1886 /*
1887  * Do static interleaving for interleave index @ilx.  Returns the ilx'th
1888  * node in pol->nodes (starting from ilx=0), wrapping around if ilx
1889  * exceeds the number of present nodes.
1890  */
1891 static unsigned int interleave_nid(struct mempolicy *pol, pgoff_t ilx)
1892 {
1893         nodemask_t nodemask = pol->nodes;
1894         unsigned int target, nnodes;
1895         int i;
1896         int nid;
1897         /*
1898          * The barrier will stabilize the nodemask in a register or on
1899          * the stack so that it will stop changing under the code.
1900          *
1901          * Between first_node() and next_node(), pol->nodes could be changed
1902          * by other threads. So we put pol->nodes in a local stack.
1903          */
1904         barrier();
1905
1906         nnodes = nodes_weight(nodemask);
1907         if (!nnodes)
1908                 return numa_node_id();
1909         target = ilx % nnodes;
1910         nid = first_node(nodemask);
1911         for (i = 0; i < target; i++)
1912                 nid = next_node(nid, nodemask);
1913         return nid;
1914 }
1915
1916 /*
1917  * Return a nodemask representing a mempolicy for filtering nodes for
1918  * page allocation, together with preferred node id (or the input node id).
1919  */
1920 static nodemask_t *policy_nodemask(gfp_t gfp, struct mempolicy *pol,
1921                                    pgoff_t ilx, int *nid)
1922 {
1923         nodemask_t *nodemask = NULL;
1924
1925         switch (pol->mode) {
1926         case MPOL_PREFERRED:
1927                 /* Override input node id */
1928                 *nid = first_node(pol->nodes);
1929                 break;
1930         case MPOL_PREFERRED_MANY:
1931                 nodemask = &pol->nodes;
1932                 if (pol->home_node != NUMA_NO_NODE)
1933                         *nid = pol->home_node;
1934                 break;
1935         case MPOL_BIND:
1936                 /* Restrict to nodemask (but not on lower zones) */
1937                 if (apply_policy_zone(pol, gfp_zone(gfp)) &&
1938                     cpuset_nodemask_valid_mems_allowed(&pol->nodes))
1939                         nodemask = &pol->nodes;
1940                 if (pol->home_node != NUMA_NO_NODE)
1941                         *nid = pol->home_node;
1942                 /*
1943                  * __GFP_THISNODE shouldn't even be used with the bind policy
1944                  * because we might easily break the expectation to stay on the
1945                  * requested node and not break the policy.
1946                  */
1947                 WARN_ON_ONCE(gfp & __GFP_THISNODE);
1948                 break;
1949         case MPOL_INTERLEAVE:
1950                 /* Override input node id */
1951                 *nid = (ilx == NO_INTERLEAVE_INDEX) ?
1952                         interleave_nodes(pol) : interleave_nid(pol, ilx);
1953                 break;
1954         }
1955
1956         return nodemask;
1957 }
1958
1959 #ifdef CONFIG_HUGETLBFS
1960 /*
1961  * huge_node(@vma, @addr, @gfp_flags, @mpol)
1962  * @vma: virtual memory area whose policy is sought
1963  * @addr: address in @vma for shared policy lookup and interleave policy
1964  * @gfp_flags: for requested zone
1965  * @mpol: pointer to mempolicy pointer for reference counted mempolicy
1966  * @nodemask: pointer to nodemask pointer for 'bind' and 'prefer-many' policy
1967  *
1968  * Returns a nid suitable for a huge page allocation and a pointer
1969  * to the struct mempolicy for conditional unref after allocation.
1970  * If the effective policy is 'bind' or 'prefer-many', returns a pointer
1971  * to the mempolicy's @nodemask for filtering the zonelist.
1972  */
1973 int huge_node(struct vm_area_struct *vma, unsigned long addr, gfp_t gfp_flags,
1974                 struct mempolicy **mpol, nodemask_t **nodemask)
1975 {
1976         pgoff_t ilx;
1977         int nid;
1978
1979         nid = numa_node_id();
1980         *mpol = get_vma_policy(vma, addr, hstate_vma(vma)->order, &ilx);
1981         *nodemask = policy_nodemask(gfp_flags, *mpol, ilx, &nid);
1982         return nid;
1983 }
1984
1985 /*
1986  * init_nodemask_of_mempolicy
1987  *
1988  * If the current task's mempolicy is "default" [NULL], return 'false'
1989  * to indicate default policy.  Otherwise, extract the policy nodemask
1990  * for 'bind' or 'interleave' policy into the argument nodemask, or
1991  * initialize the argument nodemask to contain the single node for
1992  * 'preferred' or 'local' policy and return 'true' to indicate presence
1993  * of non-default mempolicy.
1994  *
1995  * We don't bother with reference counting the mempolicy [mpol_get/put]
1996  * because the current task is examining it's own mempolicy and a task's
1997  * mempolicy is only ever changed by the task itself.
1998  *
1999  * N.B., it is the caller's responsibility to free a returned nodemask.
2000  */
2001 bool init_nodemask_of_mempolicy(nodemask_t *mask)
2002 {
2003         struct mempolicy *mempolicy;
2004
2005         if (!(mask && current->mempolicy))
2006                 return false;
2007
2008         task_lock(current);
2009         mempolicy = current->mempolicy;
2010         switch (mempolicy->mode) {
2011         case MPOL_PREFERRED:
2012         case MPOL_PREFERRED_MANY:
2013         case MPOL_BIND:
2014         case MPOL_INTERLEAVE:
2015                 *mask = mempolicy->nodes;
2016                 break;
2017
2018         case MPOL_LOCAL:
2019                 init_nodemask_of_node(mask, numa_node_id());
2020                 break;
2021
2022         default:
2023                 BUG();
2024         }
2025         task_unlock(current);
2026
2027         return true;
2028 }
2029 #endif
2030
2031 /*
2032  * mempolicy_in_oom_domain
2033  *
2034  * If tsk's mempolicy is "bind", check for intersection between mask and
2035  * the policy nodemask. Otherwise, return true for all other policies
2036  * including "interleave", as a tsk with "interleave" policy may have
2037  * memory allocated from all nodes in system.
2038  *
2039  * Takes task_lock(tsk) to prevent freeing of its mempolicy.
2040  */
2041 bool mempolicy_in_oom_domain(struct task_struct *tsk,
2042                                         const nodemask_t *mask)
2043 {
2044         struct mempolicy *mempolicy;
2045         bool ret = true;
2046
2047         if (!mask)
2048                 return ret;
2049
2050         task_lock(tsk);
2051         mempolicy = tsk->mempolicy;
2052         if (mempolicy && mempolicy->mode == MPOL_BIND)
2053                 ret = nodes_intersects(mempolicy->nodes, *mask);
2054         task_unlock(tsk);
2055
2056         return ret;
2057 }
2058
2059 static struct page *alloc_pages_preferred_many(gfp_t gfp, unsigned int order,
2060                                                 int nid, nodemask_t *nodemask)
2061 {
2062         struct page *page;
2063         gfp_t preferred_gfp;
2064
2065         /*
2066          * This is a two pass approach. The first pass will only try the
2067          * preferred nodes but skip the direct reclaim and allow the
2068          * allocation to fail, while the second pass will try all the
2069          * nodes in system.
2070          */
2071         preferred_gfp = gfp | __GFP_NOWARN;
2072         preferred_gfp &= ~(__GFP_DIRECT_RECLAIM | __GFP_NOFAIL);
2073         page = __alloc_pages(preferred_gfp, order, nid, nodemask);
2074         if (!page)
2075                 page = __alloc_pages(gfp, order, nid, NULL);
2076
2077         return page;
2078 }
2079
2080 /**
2081  * alloc_pages_mpol - Allocate pages according to NUMA mempolicy.
2082  * @gfp: GFP flags.
2083  * @order: Order of the page allocation.
2084  * @pol: Pointer to the NUMA mempolicy.
2085  * @ilx: Index for interleave mempolicy (also distinguishes alloc_pages()).
2086  * @nid: Preferred node (usually numa_node_id() but @mpol may override it).
2087  *
2088  * Return: The page on success or NULL if allocation fails.
2089  */
2090 struct page *alloc_pages_mpol(gfp_t gfp, unsigned int order,
2091                 struct mempolicy *pol, pgoff_t ilx, int nid)
2092 {
2093         nodemask_t *nodemask;
2094         struct page *page;
2095
2096         nodemask = policy_nodemask(gfp, pol, ilx, &nid);
2097
2098         if (pol->mode == MPOL_PREFERRED_MANY)
2099                 return alloc_pages_preferred_many(gfp, order, nid, nodemask);
2100
2101         if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE) &&
2102             /* filter "hugepage" allocation, unless from alloc_pages() */
2103             order == HPAGE_PMD_ORDER && ilx != NO_INTERLEAVE_INDEX) {
2104                 /*
2105                  * For hugepage allocation and non-interleave policy which
2106                  * allows the current node (or other explicitly preferred
2107                  * node) we only try to allocate from the current/preferred
2108                  * node and don't fall back to other nodes, as the cost of
2109                  * remote accesses would likely offset THP benefits.
2110                  *
2111                  * If the policy is interleave or does not allow the current
2112                  * node in its nodemask, we allocate the standard way.
2113                  */
2114                 if (pol->mode != MPOL_INTERLEAVE &&
2115                     (!nodemask || node_isset(nid, *nodemask))) {
2116                         /*
2117                          * First, try to allocate THP only on local node, but
2118                          * don't reclaim unnecessarily, just compact.
2119                          */
2120                         page = __alloc_pages_node(nid,
2121                                 gfp | __GFP_THISNODE | __GFP_NORETRY, order);
2122                         if (page || !(gfp & __GFP_DIRECT_RECLAIM))
2123                                 return page;
2124                         /*
2125                          * If hugepage allocations are configured to always
2126                          * synchronous compact or the vma has been madvised
2127                          * to prefer hugepage backing, retry allowing remote
2128                          * memory with both reclaim and compact as well.
2129                          */
2130                 }
2131         }
2132
2133         page = __alloc_pages(gfp, order, nid, nodemask);
2134
2135         if (unlikely(pol->mode == MPOL_INTERLEAVE) && page) {
2136                 /* skip NUMA_INTERLEAVE_HIT update if numa stats is disabled */
2137                 if (static_branch_likely(&vm_numa_stat_key) &&
2138                     page_to_nid(page) == nid) {
2139                         preempt_disable();
2140                         __count_numa_event(page_zone(page), NUMA_INTERLEAVE_HIT);
2141                         preempt_enable();
2142                 }
2143         }
2144
2145         return page;
2146 }
2147
2148 /**
2149  * vma_alloc_folio - Allocate a folio for a VMA.
2150  * @gfp: GFP flags.
2151  * @order: Order of the folio.
2152  * @vma: Pointer to VMA.
2153  * @addr: Virtual address of the allocation.  Must be inside @vma.
2154  * @hugepage: Unused (was: For hugepages try only preferred node if possible).
2155  *
2156  * Allocate a folio for a specific address in @vma, using the appropriate
2157  * NUMA policy.  The caller must hold the mmap_lock of the mm_struct of the
2158  * VMA to prevent it from going away.  Should be used for all allocations
2159  * for folios that will be mapped into user space, excepting hugetlbfs, and
2160  * excepting where direct use of alloc_pages_mpol() is more appropriate.
2161  *
2162  * Return: The folio on success or NULL if allocation fails.
2163  */
2164 struct folio *vma_alloc_folio(gfp_t gfp, int order, struct vm_area_struct *vma,
2165                 unsigned long addr, bool hugepage)
2166 {
2167         struct mempolicy *pol;
2168         pgoff_t ilx;
2169         struct page *page;
2170
2171         pol = get_vma_policy(vma, addr, order, &ilx);
2172         page = alloc_pages_mpol(gfp | __GFP_COMP, order,
2173                                 pol, ilx, numa_node_id());
2174         mpol_cond_put(pol);
2175         return page_rmappable_folio(page);
2176 }
2177 EXPORT_SYMBOL(vma_alloc_folio);
2178
2179 /**
2180  * alloc_pages - Allocate pages.
2181  * @gfp: GFP flags.
2182  * @order: Power of two of number of pages to allocate.
2183  *
2184  * Allocate 1 << @order contiguous pages.  The physical address of the
2185  * first page is naturally aligned (eg an order-3 allocation will be aligned
2186  * to a multiple of 8 * PAGE_SIZE bytes).  The NUMA policy of the current
2187  * process is honoured when in process context.
2188  *
2189  * Context: Can be called from any context, providing the appropriate GFP
2190  * flags are used.
2191  * Return: The page on success or NULL if allocation fails.
2192  */
2193 struct page *alloc_pages(gfp_t gfp, unsigned int order)
2194 {
2195         struct mempolicy *pol = &default_policy;
2196
2197         /*
2198          * No reference counting needed for current->mempolicy
2199          * nor system default_policy
2200          */
2201         if (!in_interrupt() && !(gfp & __GFP_THISNODE))
2202                 pol = get_task_policy(current);
2203
2204         return alloc_pages_mpol(gfp, order,
2205                                 pol, NO_INTERLEAVE_INDEX, numa_node_id());
2206 }
2207 EXPORT_SYMBOL(alloc_pages);
2208
2209 struct folio *folio_alloc(gfp_t gfp, unsigned int order)
2210 {
2211         return page_rmappable_folio(alloc_pages(gfp | __GFP_COMP, order));
2212 }
2213 EXPORT_SYMBOL(folio_alloc);
2214
2215 static unsigned long alloc_pages_bulk_array_interleave(gfp_t gfp,
2216                 struct mempolicy *pol, unsigned long nr_pages,
2217                 struct page **page_array)
2218 {
2219         int nodes;
2220         unsigned long nr_pages_per_node;
2221         int delta;
2222         int i;
2223         unsigned long nr_allocated;
2224         unsigned long total_allocated = 0;
2225
2226         nodes = nodes_weight(pol->nodes);
2227         nr_pages_per_node = nr_pages / nodes;
2228         delta = nr_pages - nodes * nr_pages_per_node;
2229
2230         for (i = 0; i < nodes; i++) {
2231                 if (delta) {
2232                         nr_allocated = __alloc_pages_bulk(gfp,
2233                                         interleave_nodes(pol), NULL,
2234                                         nr_pages_per_node + 1, NULL,
2235                                         page_array);
2236                         delta--;
2237                 } else {
2238                         nr_allocated = __alloc_pages_bulk(gfp,
2239                                         interleave_nodes(pol), NULL,
2240                                         nr_pages_per_node, NULL, page_array);
2241                 }
2242
2243                 page_array += nr_allocated;
2244                 total_allocated += nr_allocated;
2245         }
2246
2247         return total_allocated;
2248 }
2249
2250 static unsigned long alloc_pages_bulk_array_preferred_many(gfp_t gfp, int nid,
2251                 struct mempolicy *pol, unsigned long nr_pages,
2252                 struct page **page_array)
2253 {
2254         gfp_t preferred_gfp;
2255         unsigned long nr_allocated = 0;
2256
2257         preferred_gfp = gfp | __GFP_NOWARN;
2258         preferred_gfp &= ~(__GFP_DIRECT_RECLAIM | __GFP_NOFAIL);
2259
2260         nr_allocated  = __alloc_pages_bulk(preferred_gfp, nid, &pol->nodes,
2261                                            nr_pages, NULL, page_array);
2262
2263         if (nr_allocated < nr_pages)
2264                 nr_allocated += __alloc_pages_bulk(gfp, numa_node_id(), NULL,
2265                                 nr_pages - nr_allocated, NULL,
2266                                 page_array + nr_allocated);
2267         return nr_allocated;
2268 }
2269
2270 /* alloc pages bulk and mempolicy should be considered at the
2271  * same time in some situation such as vmalloc.
2272  *
2273  * It can accelerate memory allocation especially interleaving
2274  * allocate memory.
2275  */
2276 unsigned long alloc_pages_bulk_array_mempolicy(gfp_t gfp,
2277                 unsigned long nr_pages, struct page **page_array)
2278 {
2279         struct mempolicy *pol = &default_policy;
2280         nodemask_t *nodemask;
2281         int nid;
2282
2283         if (!in_interrupt() && !(gfp & __GFP_THISNODE))
2284                 pol = get_task_policy(current);
2285
2286         if (pol->mode == MPOL_INTERLEAVE)
2287                 return alloc_pages_bulk_array_interleave(gfp, pol,
2288                                                          nr_pages, page_array);
2289
2290         if (pol->mode == MPOL_PREFERRED_MANY)
2291                 return alloc_pages_bulk_array_preferred_many(gfp,
2292                                 numa_node_id(), pol, nr_pages, page_array);
2293
2294         nid = numa_node_id();
2295         nodemask = policy_nodemask(gfp, pol, NO_INTERLEAVE_INDEX, &nid);
2296         return __alloc_pages_bulk(gfp, nid, nodemask,
2297                                   nr_pages, NULL, page_array);
2298 }
2299
2300 int vma_dup_policy(struct vm_area_struct *src, struct vm_area_struct *dst)
2301 {
2302         struct mempolicy *pol = mpol_dup(src->vm_policy);
2303
2304         if (IS_ERR(pol))
2305                 return PTR_ERR(pol);
2306         dst->vm_policy = pol;
2307         return 0;
2308 }
2309
2310 /*
2311  * If mpol_dup() sees current->cpuset == cpuset_being_rebound, then it
2312  * rebinds the mempolicy its copying by calling mpol_rebind_policy()
2313  * with the mems_allowed returned by cpuset_mems_allowed().  This
2314  * keeps mempolicies cpuset relative after its cpuset moves.  See
2315  * further kernel/cpuset.c update_nodemask().
2316  *
2317  * current's mempolicy may be rebinded by the other task(the task that changes
2318  * cpuset's mems), so we needn't do rebind work for current task.
2319  */
2320
2321 /* Slow path of a mempolicy duplicate */
2322 struct mempolicy *__mpol_dup(struct mempolicy *old)
2323 {
2324         struct mempolicy *new = kmem_cache_alloc(policy_cache, GFP_KERNEL);
2325
2326         if (!new)
2327                 return ERR_PTR(-ENOMEM);
2328
2329         /* task's mempolicy is protected by alloc_lock */
2330         if (old == current->mempolicy) {
2331                 task_lock(current);
2332                 *new = *old;
2333                 task_unlock(current);
2334         } else
2335                 *new = *old;
2336
2337         if (current_cpuset_is_being_rebound()) {
2338                 nodemask_t mems = cpuset_mems_allowed(current);
2339                 mpol_rebind_policy(new, &mems);
2340         }
2341         atomic_set(&new->refcnt, 1);
2342         return new;
2343 }
2344
2345 /* Slow path of a mempolicy comparison */
2346 bool __mpol_equal(struct mempolicy *a, struct mempolicy *b)
2347 {
2348         if (!a || !b)
2349                 return false;
2350         if (a->mode != b->mode)
2351                 return false;
2352         if (a->flags != b->flags)
2353                 return false;
2354         if (a->home_node != b->home_node)
2355                 return false;
2356         if (mpol_store_user_nodemask(a))
2357                 if (!nodes_equal(a->w.user_nodemask, b->w.user_nodemask))
2358                         return false;
2359
2360         switch (a->mode) {
2361         case MPOL_BIND:
2362         case MPOL_INTERLEAVE:
2363         case MPOL_PREFERRED:
2364         case MPOL_PREFERRED_MANY:
2365                 return !!nodes_equal(a->nodes, b->nodes);
2366         case MPOL_LOCAL:
2367                 return true;
2368         default:
2369                 BUG();
2370                 return false;
2371         }
2372 }
2373
2374 /*
2375  * Shared memory backing store policy support.
2376  *
2377  * Remember policies even when nobody has shared memory mapped.
2378  * The policies are kept in Red-Black tree linked from the inode.
2379  * They are protected by the sp->lock rwlock, which should be held
2380  * for any accesses to the tree.
2381  */
2382
2383 /*
2384  * lookup first element intersecting start-end.  Caller holds sp->lock for
2385  * reading or for writing
2386  */
2387 static struct sp_node *sp_lookup(struct shared_policy *sp,
2388                                         pgoff_t start, pgoff_t end)
2389 {
2390         struct rb_node *n = sp->root.rb_node;
2391
2392         while (n) {
2393                 struct sp_node *p = rb_entry(n, struct sp_node, nd);
2394
2395                 if (start >= p->end)
2396                         n = n->rb_right;
2397                 else if (end <= p->start)
2398                         n = n->rb_left;
2399                 else
2400                         break;
2401         }
2402         if (!n)
2403                 return NULL;
2404         for (;;) {
2405                 struct sp_node *w = NULL;
2406                 struct rb_node *prev = rb_prev(n);
2407                 if (!prev)
2408                         break;
2409                 w = rb_entry(prev, struct sp_node, nd);
2410                 if (w->end <= start)
2411                         break;
2412                 n = prev;
2413         }
2414         return rb_entry(n, struct sp_node, nd);
2415 }
2416
2417 /*
2418  * Insert a new shared policy into the list.  Caller holds sp->lock for
2419  * writing.
2420  */
2421 static void sp_insert(struct shared_policy *sp, struct sp_node *new)
2422 {
2423         struct rb_node **p = &sp->root.rb_node;
2424         struct rb_node *parent = NULL;
2425         struct sp_node *nd;
2426
2427         while (*p) {
2428                 parent = *p;
2429                 nd = rb_entry(parent, struct sp_node, nd);
2430                 if (new->start < nd->start)
2431                         p = &(*p)->rb_left;
2432                 else if (new->end > nd->end)
2433                         p = &(*p)->rb_right;
2434                 else
2435                         BUG();
2436         }
2437         rb_link_node(&new->nd, parent, p);
2438         rb_insert_color(&new->nd, &sp->root);
2439 }
2440
2441 /* Find shared policy intersecting idx */
2442 struct mempolicy *mpol_shared_policy_lookup(struct shared_policy *sp,
2443                                                 pgoff_t idx)
2444 {
2445         struct mempolicy *pol = NULL;
2446         struct sp_node *sn;
2447
2448         if (!sp->root.rb_node)
2449                 return NULL;
2450         read_lock(&sp->lock);
2451         sn = sp_lookup(sp, idx, idx+1);
2452         if (sn) {
2453                 mpol_get(sn->policy);
2454                 pol = sn->policy;
2455         }
2456         read_unlock(&sp->lock);
2457         return pol;
2458 }
2459
2460 static void sp_free(struct sp_node *n)
2461 {
2462         mpol_put(n->policy);
2463         kmem_cache_free(sn_cache, n);
2464 }
2465
2466 /**
2467  * mpol_misplaced - check whether current folio node is valid in policy
2468  *
2469  * @folio: folio to be checked
2470  * @vma: vm area where folio mapped
2471  * @addr: virtual address in @vma for shared policy lookup and interleave policy
2472  *
2473  * Lookup current policy node id for vma,addr and "compare to" folio's
2474  * node id.  Policy determination "mimics" alloc_page_vma().
2475  * Called from fault path where we know the vma and faulting address.
2476  *
2477  * Return: NUMA_NO_NODE if the page is in a node that is valid for this
2478  * policy, or a suitable node ID to allocate a replacement folio from.
2479  */
2480 int mpol_misplaced(struct folio *folio, struct vm_area_struct *vma,
2481                    unsigned long addr)
2482 {
2483         struct mempolicy *pol;
2484         pgoff_t ilx;
2485         struct zoneref *z;
2486         int curnid = folio_nid(folio);
2487         int thiscpu = raw_smp_processor_id();
2488         int thisnid = cpu_to_node(thiscpu);
2489         int polnid = NUMA_NO_NODE;
2490         int ret = NUMA_NO_NODE;
2491
2492         pol = get_vma_policy(vma, addr, folio_order(folio), &ilx);
2493         if (!(pol->flags & MPOL_F_MOF))
2494                 goto out;
2495
2496         switch (pol->mode) {
2497         case MPOL_INTERLEAVE:
2498                 polnid = interleave_nid(pol, ilx);
2499                 break;
2500
2501         case MPOL_PREFERRED:
2502                 if (node_isset(curnid, pol->nodes))
2503                         goto out;
2504                 polnid = first_node(pol->nodes);
2505                 break;
2506
2507         case MPOL_LOCAL:
2508                 polnid = numa_node_id();
2509                 break;
2510
2511         case MPOL_BIND:
2512                 /* Optimize placement among multiple nodes via NUMA balancing */
2513                 if (pol->flags & MPOL_F_MORON) {
2514                         if (node_isset(thisnid, pol->nodes))
2515                                 break;
2516                         goto out;
2517                 }
2518                 fallthrough;
2519
2520         case MPOL_PREFERRED_MANY:
2521                 /*
2522                  * use current page if in policy nodemask,
2523                  * else select nearest allowed node, if any.
2524                  * If no allowed nodes, use current [!misplaced].
2525                  */
2526                 if (node_isset(curnid, pol->nodes))
2527                         goto out;
2528                 z = first_zones_zonelist(
2529                                 node_zonelist(numa_node_id(), GFP_HIGHUSER),
2530                                 gfp_zone(GFP_HIGHUSER),
2531                                 &pol->nodes);
2532                 polnid = zone_to_nid(z->zone);
2533                 break;
2534
2535         default:
2536                 BUG();
2537         }
2538
2539         /* Migrate the folio towards the node whose CPU is referencing it */
2540         if (pol->flags & MPOL_F_MORON) {
2541                 polnid = thisnid;
2542
2543                 if (!should_numa_migrate_memory(current, folio, curnid,
2544                                                 thiscpu))
2545                         goto out;
2546         }
2547
2548         if (curnid != polnid)
2549                 ret = polnid;
2550 out:
2551         mpol_cond_put(pol);
2552
2553         return ret;
2554 }
2555
2556 /*
2557  * Drop the (possibly final) reference to task->mempolicy.  It needs to be
2558  * dropped after task->mempolicy is set to NULL so that any allocation done as
2559  * part of its kmem_cache_free(), such as by KASAN, doesn't reference a freed
2560  * policy.
2561  */
2562 void mpol_put_task_policy(struct task_struct *task)
2563 {
2564         struct mempolicy *pol;
2565
2566         task_lock(task);
2567         pol = task->mempolicy;
2568         task->mempolicy = NULL;
2569         task_unlock(task);
2570         mpol_put(pol);
2571 }
2572
2573 static void sp_delete(struct shared_policy *sp, struct sp_node *n)
2574 {
2575         rb_erase(&n->nd, &sp->root);
2576         sp_free(n);
2577 }
2578
2579 static void sp_node_init(struct sp_node *node, unsigned long start,
2580                         unsigned long end, struct mempolicy *pol)
2581 {
2582         node->start = start;
2583         node->end = end;
2584         node->policy = pol;
2585 }
2586
2587 static struct sp_node *sp_alloc(unsigned long start, unsigned long end,
2588                                 struct mempolicy *pol)
2589 {
2590         struct sp_node *n;
2591         struct mempolicy *newpol;
2592
2593         n = kmem_cache_alloc(sn_cache, GFP_KERNEL);
2594         if (!n)
2595                 return NULL;
2596
2597         newpol = mpol_dup(pol);
2598         if (IS_ERR(newpol)) {
2599                 kmem_cache_free(sn_cache, n);
2600                 return NULL;
2601         }
2602         newpol->flags |= MPOL_F_SHARED;
2603         sp_node_init(n, start, end, newpol);
2604
2605         return n;
2606 }
2607
2608 /* Replace a policy range. */
2609 static int shared_policy_replace(struct shared_policy *sp, pgoff_t start,
2610                                  pgoff_t end, struct sp_node *new)
2611 {
2612         struct sp_node *n;
2613         struct sp_node *n_new = NULL;
2614         struct mempolicy *mpol_new = NULL;
2615         int ret = 0;
2616
2617 restart:
2618         write_lock(&sp->lock);
2619         n = sp_lookup(sp, start, end);
2620         /* Take care of old policies in the same range. */
2621         while (n && n->start < end) {
2622                 struct rb_node *next = rb_next(&n->nd);
2623                 if (n->start >= start) {
2624                         if (n->end <= end)
2625                                 sp_delete(sp, n);
2626                         else
2627                                 n->start = end;
2628                 } else {
2629                         /* Old policy spanning whole new range. */
2630                         if (n->end > end) {
2631                                 if (!n_new)
2632                                         goto alloc_new;
2633
2634                                 *mpol_new = *n->policy;
2635                                 atomic_set(&mpol_new->refcnt, 1);
2636                                 sp_node_init(n_new, end, n->end, mpol_new);
2637                                 n->end = start;
2638                                 sp_insert(sp, n_new);
2639                                 n_new = NULL;
2640                                 mpol_new = NULL;
2641                                 break;
2642                         } else
2643                                 n->end = start;
2644                 }
2645                 if (!next)
2646                         break;
2647                 n = rb_entry(next, struct sp_node, nd);
2648         }
2649         if (new)
2650                 sp_insert(sp, new);
2651         write_unlock(&sp->lock);
2652         ret = 0;
2653
2654 err_out:
2655         if (mpol_new)
2656                 mpol_put(mpol_new);
2657         if (n_new)
2658                 kmem_cache_free(sn_cache, n_new);
2659
2660         return ret;
2661
2662 alloc_new:
2663         write_unlock(&sp->lock);
2664         ret = -ENOMEM;
2665         n_new = kmem_cache_alloc(sn_cache, GFP_KERNEL);
2666         if (!n_new)
2667                 goto err_out;
2668         mpol_new = kmem_cache_alloc(policy_cache, GFP_KERNEL);
2669         if (!mpol_new)
2670                 goto err_out;
2671         atomic_set(&mpol_new->refcnt, 1);
2672         goto restart;
2673 }
2674
2675 /**
2676  * mpol_shared_policy_init - initialize shared policy for inode
2677  * @sp: pointer to inode shared policy
2678  * @mpol:  struct mempolicy to install
2679  *
2680  * Install non-NULL @mpol in inode's shared policy rb-tree.
2681  * On entry, the current task has a reference on a non-NULL @mpol.
2682  * This must be released on exit.
2683  * This is called at get_inode() calls and we can use GFP_KERNEL.
2684  */
2685 void mpol_shared_policy_init(struct shared_policy *sp, struct mempolicy *mpol)
2686 {
2687         int ret;
2688
2689         sp->root = RB_ROOT;             /* empty tree == default mempolicy */
2690         rwlock_init(&sp->lock);
2691
2692         if (mpol) {
2693                 struct sp_node *sn;
2694                 struct mempolicy *npol;
2695                 NODEMASK_SCRATCH(scratch);
2696
2697                 if (!scratch)
2698                         goto put_mpol;
2699
2700                 /* contextualize the tmpfs mount point mempolicy to this file */
2701                 npol = mpol_new(mpol->mode, mpol->flags, &mpol->w.user_nodemask);
2702                 if (IS_ERR(npol))
2703                         goto free_scratch; /* no valid nodemask intersection */
2704
2705                 task_lock(current);
2706                 ret = mpol_set_nodemask(npol, &mpol->w.user_nodemask, scratch);
2707                 task_unlock(current);
2708                 if (ret)
2709                         goto put_npol;
2710
2711                 /* alloc node covering entire file; adds ref to file's npol */
2712                 sn = sp_alloc(0, MAX_LFS_FILESIZE >> PAGE_SHIFT, npol);
2713                 if (sn)
2714                         sp_insert(sp, sn);
2715 put_npol:
2716                 mpol_put(npol); /* drop initial ref on file's npol */
2717 free_scratch:
2718                 NODEMASK_SCRATCH_FREE(scratch);
2719 put_mpol:
2720                 mpol_put(mpol); /* drop our incoming ref on sb mpol */
2721         }
2722 }
2723
2724 int mpol_set_shared_policy(struct shared_policy *sp,
2725                         struct vm_area_struct *vma, struct mempolicy *pol)
2726 {
2727         int err;
2728         struct sp_node *new = NULL;
2729         unsigned long sz = vma_pages(vma);
2730
2731         if (pol) {
2732                 new = sp_alloc(vma->vm_pgoff, vma->vm_pgoff + sz, pol);
2733                 if (!new)
2734                         return -ENOMEM;
2735         }
2736         err = shared_policy_replace(sp, vma->vm_pgoff, vma->vm_pgoff + sz, new);
2737         if (err && new)
2738                 sp_free(new);
2739         return err;
2740 }
2741
2742 /* Free a backing policy store on inode delete. */
2743 void mpol_free_shared_policy(struct shared_policy *sp)
2744 {
2745         struct sp_node *n;
2746         struct rb_node *next;
2747
2748         if (!sp->root.rb_node)
2749                 return;
2750         write_lock(&sp->lock);
2751         next = rb_first(&sp->root);
2752         while (next) {
2753                 n = rb_entry(next, struct sp_node, nd);
2754                 next = rb_next(&n->nd);
2755                 sp_delete(sp, n);
2756         }
2757         write_unlock(&sp->lock);
2758 }
2759
2760 #ifdef CONFIG_NUMA_BALANCING
2761 static int __initdata numabalancing_override;
2762
2763 static void __init check_numabalancing_enable(void)
2764 {
2765         bool numabalancing_default = false;
2766
2767         if (IS_ENABLED(CONFIG_NUMA_BALANCING_DEFAULT_ENABLED))
2768                 numabalancing_default = true;
2769
2770         /* Parsed by setup_numabalancing. override == 1 enables, -1 disables */
2771         if (numabalancing_override)
2772                 set_numabalancing_state(numabalancing_override == 1);
2773
2774         if (num_online_nodes() > 1 && !numabalancing_override) {
2775                 pr_info("%s automatic NUMA balancing. Configure with numa_balancing= or the kernel.numa_balancing sysctl\n",
2776                         numabalancing_default ? "Enabling" : "Disabling");
2777                 set_numabalancing_state(numabalancing_default);
2778         }
2779 }
2780
2781 static int __init setup_numabalancing(char *str)
2782 {
2783         int ret = 0;
2784         if (!str)
2785                 goto out;
2786
2787         if (!strcmp(str, "enable")) {
2788                 numabalancing_override = 1;
2789                 ret = 1;
2790         } else if (!strcmp(str, "disable")) {
2791                 numabalancing_override = -1;
2792                 ret = 1;
2793         }
2794 out:
2795         if (!ret)
2796                 pr_warn("Unable to parse numa_balancing=\n");
2797
2798         return ret;
2799 }
2800 __setup("numa_balancing=", setup_numabalancing);
2801 #else
2802 static inline void __init check_numabalancing_enable(void)
2803 {
2804 }
2805 #endif /* CONFIG_NUMA_BALANCING */
2806
2807 void __init numa_policy_init(void)
2808 {
2809         nodemask_t interleave_nodes;
2810         unsigned long largest = 0;
2811         int nid, prefer = 0;
2812
2813         policy_cache = kmem_cache_create("numa_policy",
2814                                          sizeof(struct mempolicy),
2815                                          0, SLAB_PANIC, NULL);
2816
2817         sn_cache = kmem_cache_create("shared_policy_node",
2818                                      sizeof(struct sp_node),
2819                                      0, SLAB_PANIC, NULL);
2820
2821         for_each_node(nid) {
2822                 preferred_node_policy[nid] = (struct mempolicy) {
2823                         .refcnt = ATOMIC_INIT(1),
2824                         .mode = MPOL_PREFERRED,
2825                         .flags = MPOL_F_MOF | MPOL_F_MORON,
2826                         .nodes = nodemask_of_node(nid),
2827                 };
2828         }
2829
2830         /*
2831          * Set interleaving policy for system init. Interleaving is only
2832          * enabled across suitably sized nodes (default is >= 16MB), or
2833          * fall back to the largest node if they're all smaller.
2834          */
2835         nodes_clear(interleave_nodes);
2836         for_each_node_state(nid, N_MEMORY) {
2837                 unsigned long total_pages = node_present_pages(nid);
2838
2839                 /* Preserve the largest node */
2840                 if (largest < total_pages) {
2841                         largest = total_pages;
2842                         prefer = nid;
2843                 }
2844
2845                 /* Interleave this node? */
2846                 if ((total_pages << PAGE_SHIFT) >= (16 << 20))
2847                         node_set(nid, interleave_nodes);
2848         }
2849
2850         /* All too small, use the largest */
2851         if (unlikely(nodes_empty(interleave_nodes)))
2852                 node_set(prefer, interleave_nodes);
2853
2854         if (do_set_mempolicy(MPOL_INTERLEAVE, 0, &interleave_nodes))
2855                 pr_err("%s: interleaving failed\n", __func__);
2856
2857         check_numabalancing_enable();
2858 }
2859
2860 /* Reset policy of current process to default */
2861 void numa_default_policy(void)
2862 {
2863         do_set_mempolicy(MPOL_DEFAULT, 0, NULL);
2864 }
2865
2866 /*
2867  * Parse and format mempolicy from/to strings
2868  */
2869 static const char * const policy_modes[] =
2870 {
2871         [MPOL_DEFAULT]    = "default",
2872         [MPOL_PREFERRED]  = "prefer",
2873         [MPOL_BIND]       = "bind",
2874         [MPOL_INTERLEAVE] = "interleave",
2875         [MPOL_LOCAL]      = "local",
2876         [MPOL_PREFERRED_MANY]  = "prefer (many)",
2877 };
2878
2879 #ifdef CONFIG_TMPFS
2880 /**
2881  * mpol_parse_str - parse string to mempolicy, for tmpfs mpol mount option.
2882  * @str:  string containing mempolicy to parse
2883  * @mpol:  pointer to struct mempolicy pointer, returned on success.
2884  *
2885  * Format of input:
2886  *      <mode>[=<flags>][:<nodelist>]
2887  *
2888  * Return: %0 on success, else %1
2889  */
2890 int mpol_parse_str(char *str, struct mempolicy **mpol)
2891 {
2892         struct mempolicy *new = NULL;
2893         unsigned short mode_flags;
2894         nodemask_t nodes;
2895         char *nodelist = strchr(str, ':');
2896         char *flags = strchr(str, '=');
2897         int err = 1, mode;
2898
2899         if (flags)
2900                 *flags++ = '\0';        /* terminate mode string */
2901
2902         if (nodelist) {
2903                 /* NUL-terminate mode or flags string */
2904                 *nodelist++ = '\0';
2905                 if (nodelist_parse(nodelist, nodes))
2906                         goto out;
2907                 if (!nodes_subset(nodes, node_states[N_MEMORY]))
2908                         goto out;
2909         } else
2910                 nodes_clear(nodes);
2911
2912         mode = match_string(policy_modes, MPOL_MAX, str);
2913         if (mode < 0)
2914                 goto out;
2915
2916         switch (mode) {
2917         case MPOL_PREFERRED:
2918                 /*
2919                  * Insist on a nodelist of one node only, although later
2920                  * we use first_node(nodes) to grab a single node, so here
2921                  * nodelist (or nodes) cannot be empty.
2922                  */
2923                 if (nodelist) {
2924                         char *rest = nodelist;
2925                         while (isdigit(*rest))
2926                                 rest++;
2927                         if (*rest)
2928                                 goto out;
2929                         if (nodes_empty(nodes))
2930                                 goto out;
2931                 }
2932                 break;
2933         case MPOL_INTERLEAVE:
2934                 /*
2935                  * Default to online nodes with memory if no nodelist
2936                  */
2937                 if (!nodelist)
2938                         nodes = node_states[N_MEMORY];
2939                 break;
2940         case MPOL_LOCAL:
2941                 /*
2942                  * Don't allow a nodelist;  mpol_new() checks flags
2943                  */
2944                 if (nodelist)
2945                         goto out;
2946                 break;
2947         case MPOL_DEFAULT:
2948                 /*
2949                  * Insist on a empty nodelist
2950                  */
2951                 if (!nodelist)
2952                         err = 0;
2953                 goto out;
2954         case MPOL_PREFERRED_MANY:
2955         case MPOL_BIND:
2956                 /*
2957                  * Insist on a nodelist
2958                  */
2959                 if (!nodelist)
2960                         goto out;
2961         }
2962
2963         mode_flags = 0;
2964         if (flags) {
2965                 /*
2966                  * Currently, we only support two mutually exclusive
2967                  * mode flags.
2968                  */
2969                 if (!strcmp(flags, "static"))
2970                         mode_flags |= MPOL_F_STATIC_NODES;
2971                 else if (!strcmp(flags, "relative"))
2972                         mode_flags |= MPOL_F_RELATIVE_NODES;
2973                 else
2974                         goto out;
2975         }
2976
2977         new = mpol_new(mode, mode_flags, &nodes);
2978         if (IS_ERR(new))
2979                 goto out;
2980
2981         /*
2982          * Save nodes for mpol_to_str() to show the tmpfs mount options
2983          * for /proc/mounts, /proc/pid/mounts and /proc/pid/mountinfo.
2984          */
2985         if (mode != MPOL_PREFERRED) {
2986                 new->nodes = nodes;
2987         } else if (nodelist) {
2988                 nodes_clear(new->nodes);
2989                 node_set(first_node(nodes), new->nodes);
2990         } else {
2991                 new->mode = MPOL_LOCAL;
2992         }
2993
2994         /*
2995          * Save nodes for contextualization: this will be used to "clone"
2996          * the mempolicy in a specific context [cpuset] at a later time.
2997          */
2998         new->w.user_nodemask = nodes;
2999
3000         err = 0;
3001
3002 out:
3003         /* Restore string for error message */
3004         if (nodelist)
3005                 *--nodelist = ':';
3006         if (flags)
3007                 *--flags = '=';
3008         if (!err)
3009                 *mpol = new;
3010         return err;
3011 }
3012 #endif /* CONFIG_TMPFS */
3013
3014 /**
3015  * mpol_to_str - format a mempolicy structure for printing
3016  * @buffer:  to contain formatted mempolicy string
3017  * @maxlen:  length of @buffer
3018  * @pol:  pointer to mempolicy to be formatted
3019  *
3020  * Convert @pol into a string.  If @buffer is too short, truncate the string.
3021  * Recommend a @maxlen of at least 32 for the longest mode, "interleave", the
3022  * longest flag, "relative", and to display at least a few node ids.
3023  */
3024 void mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol)
3025 {
3026         char *p = buffer;
3027         nodemask_t nodes = NODE_MASK_NONE;
3028         unsigned short mode = MPOL_DEFAULT;
3029         unsigned short flags = 0;
3030
3031         if (pol && pol != &default_policy && !(pol->flags & MPOL_F_MORON)) {
3032                 mode = pol->mode;
3033                 flags = pol->flags;
3034         }
3035
3036         switch (mode) {
3037         case MPOL_DEFAULT:
3038         case MPOL_LOCAL:
3039                 break;
3040         case MPOL_PREFERRED:
3041         case MPOL_PREFERRED_MANY:
3042         case MPOL_BIND:
3043         case MPOL_INTERLEAVE:
3044                 nodes = pol->nodes;
3045                 break;
3046         default:
3047                 WARN_ON_ONCE(1);
3048                 snprintf(p, maxlen, "unknown");
3049                 return;
3050         }
3051
3052         p += snprintf(p, maxlen, "%s", policy_modes[mode]);
3053
3054         if (flags & MPOL_MODE_FLAGS) {
3055                 p += snprintf(p, buffer + maxlen - p, "=");
3056
3057                 /*
3058                  * Currently, the only defined flags are mutually exclusive
3059                  */
3060                 if (flags & MPOL_F_STATIC_NODES)
3061                         p += snprintf(p, buffer + maxlen - p, "static");
3062                 else if (flags & MPOL_F_RELATIVE_NODES)
3063                         p += snprintf(p, buffer + maxlen - p, "relative");
3064         }
3065
3066         if (!nodes_empty(nodes))
3067                 p += scnprintf(p, buffer + maxlen - p, ":%*pbl",
3068                                nodemask_pr_args(&nodes));
3069 }