linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/1] oom: stop allocating user memory if TIF_MEMDIE is set
@ 2007-06-06 18:59 Ethan Solomita
  0 siblings, 0 replies; only message in thread
From: Ethan Solomita @ 2007-06-06 18:59 UTC (permalink / raw)
  To: Andrew Morton, linux-mm

get_user_pages() can try to allocate a nearly unlimited amount of memory on behalf of a user process, even if that process has been OOM killed. The OOM kill occurs upon return to user space via a SIGKILL, but get_user_pages() will try allocate all its memory before returning. Change get_user_pages() to check for TIF_MEMDIE, and if set then return immediately.

Signed-off-by: Ethan Solomita <solo@google.com>
---
diff -uprN -X orig/Documentation/dontdiff orig/mm/memory.c new/mm/memory.c
--- orig/mm/memory.c	2007-06-05 19:01:46.000000000 -0700
+++ new/mm/memory.c	2007-06-05 19:07:15.000000000 -0700
@@ -1084,6 +1084,15 @@ int get_user_pages(struct task_struct *t
 		do {
 			struct page *page;
 
+			/*
+			 * If tsk is ooming, cut off its access to large memory
+			 * allocations. It has a pending SIGKILL, but it can't
+			 * be processed until returning to user space.
+			 */
+
+			if (unlikely(test_tsk_thread_flag(tsk, TIF_MEMDIE)))
+				return -ENOMEM;
+
 			if (write)
 				foll_flags |= FOLL_WRITE;
 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2007-06-06 18:59 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-06-06 18:59 [PATCH 1/1] oom: stop allocating user memory if TIF_MEMDIE is set Ethan Solomita

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox