Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f15ca78e authored by Oleg Nesterov's avatar Oleg Nesterov Committed by Linus Torvalds
Browse files

mempolicy: change get_task_policy() to return default_policy rather than NULL



Every caller of get_task_policy() falls back to default_policy if it
returns NULL. Change get_task_policy() to do this.

Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: David Rientjes <rientjes@google.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 2386740d
Loading
Loading
Loading
Loading
+13 −18
Original line number Diff line number Diff line
@@ -126,22 +126,20 @@ static struct mempolicy preferred_node_policy[MAX_NUMNODES];
static struct mempolicy *get_task_policy(struct task_struct *p)
{
	struct mempolicy *pol = p->mempolicy;
	int node;

	if (!pol) {
		int node = numa_node_id();
	if (pol)
		return pol;

	node = numa_node_id();
	if (node != NUMA_NO_NODE) {
		pol = &preferred_node_policy[node];
			/*
			 * preferred_node_policy is not initialised early in
			 * boot
			 */
			if (!pol->mode)
				pol = NULL;
		}
		/* preferred_node_policy is not initialised early in boot */
		if (pol->mode)
			return pol;
	}

	return pol;
	return &default_policy;
}

static const struct mempolicy_operations {
@@ -1644,14 +1642,14 @@ struct mempolicy *get_vma_policy(struct task_struct *task,
				mpol_get(pol);
		}
	}
	if (!pol)
		pol = &default_policy;

	return pol;
}

bool vma_policy_mof(struct task_struct *task, struct vm_area_struct *vma)
{
	struct mempolicy *pol = get_task_policy(task);

	if (vma) {
		if (vma->vm_ops && vma->vm_ops->get_policy) {
			bool ret = false;
@@ -1667,9 +1665,6 @@ bool vma_policy_mof(struct task_struct *task, struct vm_area_struct *vma)
		}
	}

	if (!pol)
		return default_policy.flags & MPOL_F_MOF;

	return pol->flags & MPOL_F_MOF;
}

@@ -2077,7 +2072,7 @@ struct page *alloc_pages_current(gfp_t gfp, unsigned order)
	struct page *page;
	unsigned int cpuset_mems_cookie;

	if (!pol || in_interrupt() || (gfp & __GFP_THISNODE))
	if (in_interrupt() || (gfp & __GFP_THISNODE))
		pol = &default_policy;

retry_cpuset: