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