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