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

Commit 54e9e291 authored by David Rientjes's avatar David Rientjes Committed by Linus Torvalds
Browse files

mm, oom: pass an oom order of -1 when triggered by sysrq



The force_kill member of struct oom_control isn't needed if an order of -1
is used instead.  This is the same as order == -1 in struct
compact_control which requires full memory compaction.

This patch introduces no functional change.

Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Cc: Michal Hocko <mhocko@suse.cz>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 6e0fc46d
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -358,8 +358,7 @@ static void moom_callback(struct work_struct *ignored)
		.zonelist = node_zonelist(first_memory_node, gfp_mask),
		.nodemask = NULL,
		.gfp_mask = gfp_mask,
		.order = 0,
		.force_kill = true,
		.order = -1,
	};

	mutex_lock(&oom_lock);
+0 −1
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@ struct oom_control {
	nodemask_t	*nodemask;
	gfp_t		gfp_mask;
	int		order;
	bool		force_kill;
};

/*
+0 −1
Original line number Diff line number Diff line
@@ -1550,7 +1550,6 @@ static void mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask,
		.nodemask = NULL,
		.gfp_mask = gfp_mask,
		.order = order,
		.force_kill = false,
	};
	struct mem_cgroup *iter;
	unsigned long chosen_points = 0;
+2 −3
Original line number Diff line number Diff line
@@ -265,7 +265,7 @@ enum oom_scan_t oom_scan_process_thread(struct oom_control *oc,
	 * Don't allow any other task to have access to the reserves.
	 */
	if (test_tsk_thread_flag(task, TIF_MEMDIE)) {
		if (!oc->force_kill)
		if (oc->order != -1)
			return OOM_SCAN_ABORT;
	}
	if (!task->mm)
@@ -278,7 +278,7 @@ enum oom_scan_t oom_scan_process_thread(struct oom_control *oc,
	if (oom_task_origin(task))
		return OOM_SCAN_SELECT;

	if (task_will_free_mem(task) && !oc->force_kill)
	if (task_will_free_mem(task) && oc->order != -1)
		return OOM_SCAN_ABORT;

	return OOM_SCAN_OK;
@@ -718,7 +718,6 @@ void pagefault_out_of_memory(void)
		.nodemask = NULL,
		.gfp_mask = 0,
		.order = 0,
		.force_kill = false,
	};

	if (mem_cgroup_oom_synchronize(true))
+0 −1
Original line number Diff line number Diff line
@@ -2698,7 +2698,6 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order,
		.nodemask = ac->nodemask,
		.gfp_mask = gfp_mask,
		.order = order,
		.force_kill = false,
	};
	struct page *page;