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