|
@@ -1616,27 +1616,24 @@ struct mempolicy *__get_vma_policy(struct vm_area_struct *vma,
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- * get_vma_policy(@task, @vma, @addr)
|
|
|
- * @task: task for fallback if vma policy == default
|
|
|
+ * get_vma_policy(@vma, @addr)
|
|
|
* @vma: virtual memory area whose policy is sought
|
|
|
* @addr: address in @vma for shared policy lookup
|
|
|
*
|
|
|
* Returns effective policy for a VMA at specified address.
|
|
|
- * Falls back to @task or system default policy, as necessary.
|
|
|
- * Current or other task's task mempolicy and non-shared vma policies must be
|
|
|
- * protected by task_lock(task) by the caller.
|
|
|
+ * Falls back to current->mempolicy or system default policy, as necessary.
|
|
|
* Shared policies [those marked as MPOL_F_SHARED] require an extra reference
|
|
|
* count--added by the get_policy() vm_op, as appropriate--to protect against
|
|
|
* freeing by another task. It is the caller's responsibility to free the
|
|
|
* extra reference for shared policies.
|
|
|
*/
|
|
|
-struct mempolicy *get_vma_policy(struct task_struct *task,
|
|
|
- struct vm_area_struct *vma, unsigned long addr)
|
|
|
+static struct mempolicy *get_vma_policy(struct vm_area_struct *vma,
|
|
|
+ unsigned long addr)
|
|
|
{
|
|
|
struct mempolicy *pol = __get_vma_policy(vma, addr);
|
|
|
|
|
|
if (!pol)
|
|
|
- pol = get_task_policy(task);
|
|
|
+ pol = get_task_policy(current);
|
|
|
|
|
|
return pol;
|
|
|
}
|
|
@@ -1864,7 +1861,7 @@ struct zonelist *huge_zonelist(struct vm_area_struct *vma, unsigned long addr,
|
|
|
{
|
|
|
struct zonelist *zl;
|
|
|
|
|
|
- *mpol = get_vma_policy(current, vma, addr);
|
|
|
+ *mpol = get_vma_policy(vma, addr);
|
|
|
*nodemask = NULL; /* assume !MPOL_BIND */
|
|
|
|
|
|
if (unlikely((*mpol)->mode == MPOL_INTERLEAVE)) {
|
|
@@ -2019,7 +2016,7 @@ alloc_pages_vma(gfp_t gfp, int order, struct vm_area_struct *vma,
|
|
|
unsigned int cpuset_mems_cookie;
|
|
|
|
|
|
retry_cpuset:
|
|
|
- pol = get_vma_policy(current, vma, addr);
|
|
|
+ pol = get_vma_policy(vma, addr);
|
|
|
cpuset_mems_cookie = read_mems_allowed_begin();
|
|
|
|
|
|
if (unlikely(pol->mode == MPOL_INTERLEAVE)) {
|
|
@@ -2285,7 +2282,7 @@ int mpol_misplaced(struct page *page, struct vm_area_struct *vma, unsigned long
|
|
|
|
|
|
BUG_ON(!vma);
|
|
|
|
|
|
- pol = get_vma_policy(current, vma, addr);
|
|
|
+ pol = get_vma_policy(vma, addr);
|
|
|
if (!(pol->flags & MPOL_F_MOF))
|
|
|
goto out;
|
|
|
|