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