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
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 |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...