OSDN Git Service

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