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         if (current_cpuset_is_being_rebound()) {
2090                 nodemask_t mems = cpuset_mems_allowed(current);
2091                 if (new->flags & MPOL_F_REBINDING)
2092                         mpol_rebind_policy(new, &mems, MPOL_REBIND_STEP2);
2093                 else
2094                         mpol_rebind_policy(new, &mems, MPOL_REBIND_ONCE);
2095         }
2096         atomic_set(&new->refcnt, 1);
2097         return new;
2098 }
2099
2100 /* Slow path of a mempolicy comparison */
2101 bool __mpol_equal(struct mempolicy *a, struct mempolicy *b)
2102 {
2103         if (!a || !b)
2104                 return false;
2105         if (a->mode != b->mode)
2106                 return false;
2107         if (a->flags != b->flags)
2108                 return false;
2109         if (mpol_store_user_nodemask(a))
2110                 if (!nodes_equal(a->w.user_nodemask, b->w.user_nodemask))
2111                         return false;
2112
2113         switch (a->mode) {
2114         case MPOL_BIND:
2115                 /* Fall through */
2116         case MPOL_INTERLEAVE:
2117                 return !!nodes_equal(a->v.nodes, b->v.nodes);
2118         case MPOL_PREFERRED:
2119                 return a->v.preferred_node == b->v.preferred_node;
2120         default:
2121                 BUG();
2122                 return false;
2123         }
2124 }
2125
2126 /*
2127  * Shared memory backing store policy support.
2128  *
2129  * Remember policies even when nobody has shared memory mapped.
2130  * The policies are kept in Red-Black tree linked from the inode.
2131  * They are protected by the sp->lock spinlock, which should be held
2132  * for any accesses to the tree.
2133  */
2134
2135 /* lookup first element intersecting start-end */
2136 /* Caller holds sp->lock */
2137 static struct sp_node *
2138 sp_lookup(struct shared_policy *sp, unsigned long start, unsigned long end)
2139 {
2140         struct rb_node *n = sp->root.rb_node;
2141
2142         while (n) {
2143                 struct sp_node *p = rb_entry(n, struct sp_node, nd);
2144
2145                 if (start >= p->end)
2146                         n = n->rb_right;
2147                 else if (end <= p->start)
2148                         n = n->rb_left;
2149                 else
2150                         break;
2151         }
2152         if (!n)
2153                 return NULL;
2154         for (;;) {
2155                 struct sp_node *w = NULL;
2156                 struct rb_node *prev = rb_prev(n);
2157                 if (!prev)
2158                         break;
2159                 w = rb_entry(prev, struct sp_node, nd);
2160                 if (w->end <= start)
2161                         break;
2162                 n = prev;
2163         }
2164         return rb_entry(n, struct sp_node, nd);
2165 }
2166
2167 /* Insert a new shared policy into the list. */
2168 /* Caller holds sp->lock */
2169 static void sp_insert(struct shared_policy *sp, struct sp_node *new)
2170 {
2171         struct rb_node **p = &sp->root.rb_node;
2172         struct rb_node *parent = NULL;
2173         struct sp_node *nd;
2174
2175         while (*p) {
2176                 parent = *p;
2177                 nd = rb_entry(parent, struct sp_node, nd);
2178                 if (new->start < nd->start)
2179                         p = &(*p)->rb_left;
2180                 else if (new->end > nd->end)
2181                         p = &(*p)->rb_right;
2182                 else
2183                         BUG();
2184         }
2185         rb_link_node(&new->nd, parent, p);
2186         rb_insert_color(&new->nd, &sp->root);
2187         pr_debug("inserting %lx-%lx: %d\n", new->start, new->end,
2188                  new->policy ? new->policy->mode : 0);
2189 }
2190
2191 /* Find shared policy intersecting idx */
2192 struct mempolicy *
2193 mpol_shared_policy_lookup(struct shared_policy *sp, unsigned long idx)
2194 {
2195         struct mempolicy *pol = NULL;
2196         struct sp_node *sn;
2197
2198         if (!sp->root.rb_node)
2199                 return NULL;
2200         spin_lock(&sp->lock);
2201         sn = sp_lookup(sp, idx, idx+1);
2202         if (sn) {
2203                 mpol_get(sn->policy);
2204                 pol = sn->policy;
2205         }
2206         spin_unlock(&sp->lock);
2207         return pol;
2208 }
2209
2210 static void sp_free(struct sp_node *n)
2211 {
2212         mpol_put(n->policy);
2213         kmem_cache_free(sn_cache, n);
2214 }
2215
2216 /**
2217  * mpol_misplaced - check whether current page node is valid in policy
2218  *
2219  * @page   - page to be checked
2220  * @vma    - vm area where page mapped
2221  * @addr   - virtual address where page mapped
2222  *
2223  * Lookup current policy node id for vma,addr and "compare to" page's
2224  * node id.
2225  *
2226  * Returns:
2227  *      -1      - not misplaced, page is in the right node
2228  *      node    - node id where the page should be
2229  *
2230  * Policy determination "mimics" alloc_page_vma().
2231  * Called from fault path where we know the vma and faulting address.
2232  */
2233 int mpol_misplaced(struct page *page, struct vm_area_struct *vma, unsigned long addr)
2234 {
2235         struct mempolicy *pol;
2236         struct zone *zone;
2237         int curnid = page_to_nid(page);
2238         unsigned long pgoff;
2239         int polnid = -1;
2240         int ret = -1;
2241
2242         BUG_ON(!vma);
2243
2244         pol = get_vma_policy(current, vma, addr);
2245         if (!(pol->flags & MPOL_F_MOF))
2246                 goto out;
2247
2248         switch (pol->mode) {
2249         case MPOL_INTERLEAVE:
2250                 BUG_ON(addr >= vma->vm_end);
2251                 BUG_ON(addr < vma->vm_start);
2252
2253                 pgoff = vma->vm_pgoff;
2254                 pgoff += (addr - vma->vm_start) >> PAGE_SHIFT;
2255                 polnid = offset_il_node(pol, vma, pgoff);
2256                 break;
2257
2258         case MPOL_PREFERRED:
2259                 if (pol->flags & MPOL_F_LOCAL)
2260                         polnid = numa_node_id();
2261                 else
2262                         polnid = pol->v.preferred_node;
2263                 break;
2264
2265         case MPOL_BIND:
2266                 /*
2267                  * allows binding to multiple nodes.
2268                  * use current page if in policy nodemask,
2269                  * else select nearest allowed node, if any.
2270                  * If no allowed nodes, use current [!misplaced].
2271                  */
2272                 if (node_isset(curnid, pol->v.nodes))
2273                         goto out;
2274                 (void)first_zones_zonelist(
2275                                 node_zonelist(numa_node_id(), GFP_HIGHUSER),
2276                                 gfp_zone(GFP_HIGHUSER),
2277                                 &pol->v.nodes, &zone);
2278                 polnid = zone->node;
2279                 break;
2280
2281         default:
2282                 BUG();
2283         }
2284
2285         /* Migrate the page towards the node whose CPU is referencing it */
2286         if (pol->flags & MPOL_F_MORON) {
2287                 int last_nid;
2288
2289                 polnid = numa_node_id();
2290
2291                 /*
2292                  * Multi-stage node selection is used in conjunction
2293                  * with a periodic migration fault to build a temporal
2294                  * task<->page relation. By using a two-stage filter we
2295                  * remove short/unlikely relations.
2296                  *
2297                  * Using P(p) ~ n_p / n_t as per frequentist
2298                  * probability, we can equate a task's usage of a
2299                  * particular page (n_p) per total usage of this
2300                  * page (n_t) (in a given time-span) to a probability.
2301                  *
2302                  * Our periodic faults will sample this probability and
2303                  * getting the same result twice in a row, given these
2304                  * samples are fully independent, is then given by
2305                  * P(n)^2, provided our sample period is sufficiently
2306                  * short compared to the usage pattern.
2307                  *
2308                  * This quadric squishes small probabilities, making
2309                  * it less likely we act on an unlikely task<->page
2310                  * relation.
2311                  */
2312                 last_nid = page_nid_xchg_last(page, polnid);
2313                 if (last_nid != polnid)
2314                         goto out;
2315         }
2316
2317         if (curnid != polnid)
2318                 ret = polnid;
2319 out:
2320         mpol_cond_put(pol);
2321
2322         return ret;
2323 }
2324
2325 static void sp_delete(struct shared_policy *sp, struct sp_node *n)
2326 {
2327         pr_debug("deleting %lx-l%lx\n", n->start, n->end);
2328         rb_erase(&n->nd, &sp->root);
2329         sp_free(n);
2330 }
2331
2332 static void sp_node_init(struct sp_node *node, unsigned long start,
2333                         unsigned long end, struct mempolicy *pol)
2334 {
2335         node->start = start;
2336         node->end = end;
2337         node->policy = pol;
2338 }
2339
2340 static struct sp_node *sp_alloc(unsigned long start, unsigned long end,
2341                                 struct mempolicy *pol)
2342 {
2343         struct sp_node *n;
2344         struct mempolicy *newpol;
2345
2346         n = kmem_cache_alloc(sn_cache, GFP_KERNEL);
2347         if (!n)
2348                 return NULL;
2349
2350         newpol = mpol_dup(pol);
2351         if (IS_ERR(newpol)) {
2352                 kmem_cache_free(sn_cache, n);
2353                 return NULL;
2354         }
2355         newpol->flags |= MPOL_F_SHARED;
2356         sp_node_init(n, start, end, newpol);
2357
2358         return n;
2359 }
2360
2361 /* Replace a policy range. */
2362 static int shared_policy_replace(struct shared_policy *sp, unsigned long start,
2363                                  unsigned long end, struct sp_node *new)
2364 {
2365         struct sp_node *n;
2366         struct sp_node *n_new = NULL;
2367         struct mempolicy *mpol_new = NULL;
2368         int ret = 0;
2369
2370 restart:
2371         spin_lock(&sp->lock);
2372         n = sp_lookup(sp, start, end);
2373         /* Take care of old policies in the same range. */
2374         while (n && n->start < end) {
2375                 struct rb_node *next = rb_next(&n->nd);
2376                 if (n->start >= start) {
2377                         if (n->end <= end)
2378                                 sp_delete(sp, n);
2379                         else
2380                                 n->start = end;
2381                 } else {
2382                         /* Old policy spanning whole new range. */
2383                         if (n->end > end) {
2384                                 if (!n_new)
2385                                         goto alloc_new;
2386
2387                                 *mpol_new = *n->policy;
2388                                 atomic_set(&mpol_new->refcnt, 1);
2389                                 sp_node_init(n_new, end, n->end, mpol_new);
2390                                 n->end = start;
2391                                 sp_insert(sp, n_new);
2392                                 n_new = NULL;
2393                                 mpol_new = NULL;
2394                                 break;
2395                         } else
2396                                 n->end = start;
2397                 }
2398                 if (!next)
2399                         break;
2400                 n = rb_entry(next, struct sp_node, nd);
2401         }
2402         if (new)
2403                 sp_insert(sp, new);
2404         spin_unlock(&sp->lock);
2405         ret = 0;
2406
2407 err_out:
2408         if (mpol_new)
2409                 mpol_put(mpol_new);
2410         if (n_new)
2411                 kmem_cache_free(sn_cache, n_new);
2412
2413         return ret;
2414
2415 alloc_new:
2416         spin_unlock(&sp->lock);
2417         ret = -ENOMEM;
2418         n_new = kmem_cache_alloc(sn_cache, GFP_KERNEL);
2419         if (!n_new)
2420                 goto err_out;
2421         mpol_new = kmem_cache_alloc(policy_cache, GFP_KERNEL);
2422         if (!mpol_new)
2423                 goto err_out;
2424         goto restart;
2425 }
2426
2427 /**
2428  * mpol_shared_policy_init - initialize shared policy for inode
2429  * @sp: pointer to inode shared policy
2430  * @mpol:  struct mempolicy to install
2431  *
2432  * Install non-NULL @mpol in inode's shared policy rb-tree.
2433  * On entry, the current task has a reference on a non-NULL @mpol.
2434  * This must be released on exit.
2435  * This is called at get_inode() calls and we can use GFP_KERNEL.
2436  */
2437 void mpol_shared_policy_init(struct shared_policy *sp, struct mempolicy *mpol)
2438 {
2439         int ret;
2440
2441         sp->root = RB_ROOT;             /* empty tree == default mempolicy */
2442         spin_lock_init(&sp->lock);
2443
2444         if (mpol) {
2445                 struct vm_area_struct pvma;
2446                 struct mempolicy *new;
2447                 NODEMASK_SCRATCH(scratch);
2448
2449                 if (!scratch)
2450                         goto put_mpol;
2451                 /* contextualize the tmpfs mount point mempolicy */
2452                 new = mpol_new(mpol->mode, mpol->flags, &mpol->w.user_nodemask);
2453                 if (IS_ERR(new))
2454                         goto free_scratch; /* no valid nodemask intersection */
2455
2456                 task_lock(current);
2457                 ret = mpol_set_nodemask(new, &mpol->w.user_nodemask, scratch);
2458                 task_unlock(current);
2459                 if (ret)
2460                         goto put_new;
2461
2462                 /* Create pseudo-vma that contains just the policy */
2463                 memset(&pvma, 0, sizeof(struct vm_area_struct));
2464                 pvma.vm_end = TASK_SIZE;        /* policy covers entire file */
2465                 mpol_set_shared_policy(sp, &pvma, new); /* adds ref */
2466
2467 put_new:
2468                 mpol_put(new);                  /* drop initial ref */
2469 free_scratch:
2470                 NODEMASK_SCRATCH_FREE(scratch);
2471 put_mpol:
2472                 mpol_put(mpol); /* drop our incoming ref on sb mpol */
2473         }
2474 }
2475
2476 int mpol_set_shared_policy(struct shared_policy *info,
2477                         struct vm_area_struct *vma, struct mempolicy *npol)
2478 {
2479         int err;
2480         struct sp_node *new = NULL;
2481         unsigned long sz = vma_pages(vma);
2482
2483         pr_debug("set_shared_policy %lx sz %lu %d %d %lx\n",
2484                  vma->vm_pgoff,
2485                  sz, npol ? npol->mode : -1,
2486                  npol ? npol->flags : -1,
2487                  npol ? nodes_addr(npol->v.nodes)[0] : NUMA_NO_NODE);
2488
2489         if (npol) {
2490                 new = sp_alloc(vma->vm_pgoff, vma->vm_pgoff + sz, npol);
2491                 if (!new)
2492                         return -ENOMEM;
2493         }
2494         err = shared_policy_replace(info, vma->vm_pgoff, vma->vm_pgoff+sz, new);
2495         if (err && new)
2496                 sp_free(new);
2497         return err;
2498 }
2499
2500 /* Free a backing policy store on inode delete. */
2501 void mpol_free_shared_policy(struct shared_policy *p)
2502 {
2503         struct sp_node *n;
2504         struct rb_node *next;
2505
2506         if (!p->root.rb_node)
2507                 return;
2508         spin_lock(&p->lock);
2509         next = rb_first(&p->root);
2510         while (next) {
2511                 n = rb_entry(next, struct sp_node, nd);
2512                 next = rb_next(&n->nd);
2513                 sp_delete(p, n);
2514         }
2515         spin_unlock(&p->lock);
2516 }
2517
2518 #ifdef CONFIG_NUMA_BALANCING
2519 static bool __initdata numabalancing_override;
2520
2521 static void __init check_numabalancing_enable(void)
2522 {
2523         bool numabalancing_default = false;
2524
2525         if (IS_ENABLED(CONFIG_NUMA_BALANCING_DEFAULT_ENABLED))
2526                 numabalancing_default = true;
2527
2528         if (nr_node_ids > 1 && !numabalancing_override) {
2529                 printk(KERN_INFO "Enabling automatic NUMA balancing. "
2530                         "Configure with numa_balancing= or sysctl");
2531                 set_numabalancing_state(numabalancing_default);
2532         }
2533 }
2534
2535 static int __init setup_numabalancing(char *str)
2536 {
2537         int ret = 0;
2538         if (!str)
2539                 goto out;
2540         numabalancing_override = true;
2541
2542         if (!strcmp(str, "enable")) {
2543                 set_numabalancing_state(true);
2544                 ret = 1;
2545         } else if (!strcmp(str, "disable")) {
2546                 set_numabalancing_state(false);
2547                 ret = 1;
2548         }
2549 out:
2550         if (!ret)
2551                 printk(KERN_WARNING "Unable to parse numa_balancing=\n");
2552
2553         return ret;
2554 }
2555 __setup("numa_balancing=", setup_numabalancing);
2556 #else
2557 static inline void __init check_numabalancing_enable(void)
2558 {
2559 }
2560 #endif /* CONFIG_NUMA_BALANCING */
2561
2562 /* assumes fs == KERNEL_DS */
2563 void __init numa_policy_init(void)
2564 {
2565         nodemask_t interleave_nodes;
2566         unsigned long largest = 0;
2567         int nid, prefer = 0;
2568
2569         policy_cache = kmem_cache_create("numa_policy",
2570                                          sizeof(struct mempolicy),
2571                                          0, SLAB_PANIC, NULL);
2572
2573         sn_cache = kmem_cache_create("shared_policy_node",
2574                                      sizeof(struct sp_node),
2575                                      0, SLAB_PANIC, NULL);
2576
2577         for_each_node(nid) {
2578                 preferred_node_policy[nid] = (struct mempolicy) {
2579                         .refcnt = ATOMIC_INIT(1),
2580                         .mode = MPOL_PREFERRED,
2581                         .flags = MPOL_F_MOF | MPOL_F_MORON,
2582                         .v = { .preferred_node = nid, },
2583                 };
2584         }
2585
2586         /*
2587          * Set interleaving policy for system init. Interleaving is only
2588          * enabled across suitably sized nodes (default is >= 16MB), or
2589          * fall back to the largest node if they're all smaller.
2590          */
2591         nodes_clear(interleave_nodes);
2592         for_each_node_state(nid, N_MEMORY) {
2593                 unsigned long total_pages = node_present_pages(nid);
2594
2595                 /* Preserve the largest node */
2596                 if (largest < total_pages) {
2597                         largest = total_pages;
2598                         prefer = nid;
2599                 }
2600
2601                 /* Interleave this node? */
2602                 if ((total_pages << PAGE_SHIFT) >= (16 << 20))
2603                         node_set(nid, interleave_nodes);
2604         }
2605
2606         /* All too small, use the largest */
2607         if (unlikely(nodes_empty(interleave_nodes)))
2608                 node_set(prefer, interleave_nodes);
2609
2610         if (do_set_mempolicy(MPOL_INTERLEAVE, 0, &interleave_nodes))
2611                 printk("numa_policy_init: interleaving failed\n");
2612
2613         check_numabalancing_enable();
2614 }
2615
2616 /* Reset policy of current process to default */
2617 void numa_default_policy(void)
2618 {
2619         do_set_mempolicy(MPOL_DEFAULT, 0, NULL);
2620 }
2621
2622 /*
2623  * Parse and format mempolicy from/to strings
2624  */
2625
2626 /*
2627  * "local" is implemented internally by MPOL_PREFERRED with MPOL_F_LOCAL flag.
2628  */
2629 static const char * const policy_modes[] =
2630 {
2631         [MPOL_DEFAULT]    = "default",
2632         [MPOL_PREFERRED]  = "prefer",
2633         [MPOL_BIND]       = "bind",
2634         [MPOL_INTERLEAVE] = "interleave",
2635         [MPOL_LOCAL]      = "local",
2636 };
2637
2638
2639 #ifdef CONFIG_TMPFS
2640 /**
2641  * mpol_parse_str - parse string to mempolicy, for tmpfs mpol mount option.
2642  * @str:  string containing mempolicy to parse
2643  * @mpol:  pointer to struct mempolicy pointer, returned on success.
2644  *
2645  * Format of input:
2646  *      <mode>[=<flags>][:<nodelist>]
2647  *
2648  * On success, returns 0, else 1
2649  */
2650 int mpol_parse_str(char *str, struct mempolicy **mpol)
2651 {
2652         struct mempolicy *new = NULL;
2653         unsigned short mode;
2654         unsigned short mode_flags;
2655         nodemask_t nodes;
2656         char *nodelist = strchr(str, ':');
2657         char *flags = strchr(str, '=');
2658         int err = 1;
2659
2660         if (nodelist) {
2661                 /* NUL-terminate mode or flags string */
2662                 *nodelist++ = '\0';
2663                 if (nodelist_parse(nodelist, nodes))
2664                         goto out;
2665                 if (!nodes_subset(nodes, node_states[N_MEMORY]))
2666                         goto out;
2667         } else
2668                 nodes_clear(nodes);
2669
2670         if (flags)
2671                 *flags++ = '\0';        /* terminate mode string */
2672
2673         for (mode = 0; mode < MPOL_MAX; mode++) {
2674                 if (!strcmp(str, policy_modes[mode])) {
2675                         break;
2676                 }
2677         }
2678         if (mode >= MPOL_MAX)
2679                 goto out;
2680
2681         switch (mode) {
2682         case MPOL_PREFERRED:
2683                 /*
2684                  * Insist on a nodelist of one node only
2685                  */
2686                 if (nodelist) {
2687                         char *rest = nodelist;
2688                         while (isdigit(*rest))
2689                                 rest++;
2690                         if (*rest)
2691                                 goto out;
2692                 }
2693                 break;
2694         case MPOL_INTERLEAVE:
2695                 /*
2696                  * Default to online nodes with memory if no nodelist
2697                  */
2698                 if (!nodelist)
2699                         nodes = node_states[N_MEMORY];
2700                 break;
2701         case MPOL_LOCAL:
2702                 /*
2703                  * Don't allow a nodelist;  mpol_new() checks flags
2704                  */
2705                 if (nodelist)
2706                         goto out;
2707                 mode = MPOL_PREFERRED;
2708                 break;
2709         case MPOL_DEFAULT:
2710                 /*
2711                  * Insist on a empty nodelist
2712                  */
2713                 if (!nodelist)
2714                         err = 0;
2715                 goto out;
2716         case MPOL_BIND:
2717                 /*
2718                  * Insist on a nodelist
2719                  */
2720                 if (!nodelist)
2721                         goto out;
2722         }
2723
2724         mode_flags = 0;
2725         if (flags) {
2726                 /*
2727                  * Currently, we only support two mutually exclusive
2728                  * mode flags.
2729                  */
2730                 if (!strcmp(flags, "static"))
2731                         mode_flags |= MPOL_F_STATIC_NODES;
2732                 else if (!strcmp(flags, "relative"))
2733                         mode_flags |= MPOL_F_RELATIVE_NODES;
2734                 else
2735                         goto out;
2736         }
2737
2738         new = mpol_new(mode, mode_flags, &nodes);
2739         if (IS_ERR(new))
2740                 goto out;
2741
2742         /*
2743          * Save nodes for mpol_to_str() to show the tmpfs mount options
2744          * for /proc/mounts, /proc/pid/mounts and /proc/pid/mountinfo.
2745          */
2746         if (mode != MPOL_PREFERRED)
2747                 new->v.nodes = nodes;
2748         else if (nodelist)
2749                 new->v.preferred_node = first_node(nodes);
2750         else
2751                 new->flags |= MPOL_F_LOCAL;
2752
2753         /*
2754          * Save nodes for contextualization: this will be used to "clone"
2755          * the mempolicy in a specific context [cpuset] at a later time.
2756          */
2757         new->w.user_nodemask = nodes;
2758
2759         err = 0;
2760
2761 out:
2762         /* Restore string for error message */
2763         if (nodelist)
2764                 *--nodelist = ':';
2765         if (flags)
2766                 *--flags = '=';
2767         if (!err)
2768                 *mpol = new;
2769         return err;
2770 }
2771 #endif /* CONFIG_TMPFS */
2772
2773 /**
2774  * mpol_to_str - format a mempolicy structure for printing
2775  * @buffer:  to contain formatted mempolicy string
2776  * @maxlen:  length of @buffer
2777  * @pol:  pointer to mempolicy to be formatted
2778  *
2779  * Convert a mempolicy into a string.
2780  * Returns the number of characters in buffer (if positive)
2781  * or an error (negative)
2782  */
2783 int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol)
2784 {
2785         char *p = buffer;
2786         int l;
2787         nodemask_t nodes;
2788         unsigned short mode;
2789         unsigned short flags = pol ? pol->flags : 0;
2790
2791         /*
2792          * Sanity check:  room for longest mode, flag and some nodes
2793          */
2794         VM_BUG_ON(maxlen < strlen("interleave") + strlen("relative") + 16);
2795
2796         if (!pol || pol == &default_policy || (pol->flags & MPOL_F_MORON))
2797                 mode = MPOL_DEFAULT;
2798         else
2799                 mode = pol->mode;
2800
2801         switch (mode) {
2802         case MPOL_DEFAULT:
2803                 nodes_clear(nodes);
2804                 break;
2805
2806         case MPOL_PREFERRED:
2807                 nodes_clear(nodes);
2808                 if (flags & MPOL_F_LOCAL)
2809                         mode = MPOL_LOCAL;
2810                 else
2811                         node_set(pol->v.preferred_node, nodes);
2812                 break;
2813
2814         case MPOL_BIND:
2815                 /* Fall through */
2816         case MPOL_INTERLEAVE:
2817                 nodes = pol->v.nodes;
2818                 break;
2819
2820         default:
2821                 return -EINVAL;
2822         }
2823
2824         l = strlen(policy_modes[mode]);
2825         if (buffer + maxlen < p + l + 1)
2826                 return -ENOSPC;
2827
2828         strcpy(p, policy_modes[mode]);
2829         p += l;
2830
2831         if (flags & MPOL_MODE_FLAGS) {
2832                 if (buffer + maxlen < p + 2)
2833                         return -ENOSPC;
2834                 *p++ = '=';
2835
2836                 /*
2837                  * Currently, the only defined flags are mutually exclusive
2838                  */
2839                 if (flags & MPOL_F_STATIC_NODES)
2840                         p += snprintf(p, buffer + maxlen - p, "static");
2841                 else if (flags & MPOL_F_RELATIVE_NODES)
2842                         p += snprintf(p, buffer + maxlen - p, "relative");
2843         }
2844
2845         if (!nodes_empty(nodes)) {
2846                 if (buffer + maxlen < p + 2)
2847                         return -ENOSPC;
2848                 *p++ = ':';
2849                 p += nodelist_scnprintf(p, buffer + maxlen - p, nodes);
2850         }
2851         return p - buffer;
2852 }