• David Rientjes's avatar
    android, lowmemorykiller: remove task handoff notifier · 83dbbdbb
    David Rientjes authored
    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: default avatarWerner Landgraf <w.landgraf@ru.ru>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
    Acked-by: default avatarColin Cross <ccross@android.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    83dbbdbb
lowmemorykiller.c 5.5 KB