Revision 83dbbdbb38666e20a75fad2294cf1df77c52f121 authored by David Rientjes on 09 April 2012, 23:56:18 UTC, committed by Linus Torvalds on 10 April 2012, 03:48:44 UTC
The task handoff notifier leaks task_struct since it never gets freed
after the callback returns NOTIFY_OK, which means it is responsible for
doing so.

It turns out the lowmemorykiller actually doesn't need this notifier at
all.  It's used to prevent unnecessary killing by waiting for a thread
to exit as a result of lowmem_shrink(), however, it's possible to do
this in the same way the kernel oom killer works by setting TIF_MEMDIE
and avoid killing if we're still waiting for it to exit.

The kernel oom killer will already automatically set TIF_MEMDIE for
threads that are attempting to allocate memory that have a fatal signal.
The thread selected by lowmem_shrink() will have such a signal after the
lowmemorykiller sends it a SIGKILL, so this won't result in an
unnecessary use of memory reserves for the thread to exit.

This has the added benefit that we don't have to rely on
CONFIG_PROFILING to prevent needlessly killing tasks.

Reported-by: Werner Landgraf <w.landgraf@ru.ru>
Cc: stable@vger.kernel.org
Signed-off-by: David Rientjes <rientjes@google.com>
Acked-by: Colin Cross <ccross@android.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 0034102
History
File Mode Size
Makefile -rw-r--r-- 394 bytes
compat.c -rw-r--r-- 18.3 KB
compat_mq.c -rw-r--r-- 4.1 KB
ipc_sysctl.c -rw-r--r-- 6.0 KB
ipcns_notifier.c -rw-r--r-- 2.2 KB
mq_sysctl.c -rw-r--r-- 2.7 KB
mqueue.c -rw-r--r-- 30.5 KB
msg.c -rw-r--r-- 20.9 KB
msgutil.c -rw-r--r-- 2.7 KB
namespace.c -rw-r--r-- 4.3 KB
sem.c -rw-r--r-- 42.1 KB
shm.c -rw-r--r-- 29.2 KB
syscall.c -rw-r--r-- 2.3 KB
util.c -rw-r--r-- 22.8 KB
util.h -rw-r--r-- 5.3 KB

back to top