• Johannes Weiner's avatar
    Revert "vmalloc: back off when the current task is killed" · b8c8a338
    Johannes Weiner authored
    This reverts commits 5d17a73a ("vmalloc: back off when the current
    task is killed") and 171012f5 ("mm: don't warn when vmalloc() fails
    due to a fatal signal").
    Commit 5d17a73a ("vmalloc: back off when the current task is
    killed") made all vmalloc allocations from a signal-killed task fail.
    We have seen crashes in the tty driver from this, where a killed task
    exiting tries to switch back to N_TTY, fails n_tty_open because of the
    vmalloc failing, and later crashes when dereferencing tty->disc_data.
    Arguably, relying on a vmalloc() call to succeed in order to properly
    exit a task is not the most robust way of doing things.  There will be a
    follow-up patch to the tty code to fall back to the N_NULL ldisc.
    But the justification to make that vmalloc() call fail like this isn't
    convincing, either.  The patch mentions an OOM victim exhausting the
    memory reserves and thus deadlocking the machine.  But the OOM killer is
    only one, improbable source of fatal signals.  It doesn't make sense to
    fail allocations preemptively with plenty of memory in most cases.
    The patch doesn't mention real-life instances where vmalloc sites would
    exhaust memory, which makes it sound more like a theoretical issue to
    begin with.  But just in case, the OOM access to memory reserves has
    been restricted on the allocator side in cd04ae1e ("mm, oom: do not
    rely on TIF_MEMDIE for memory reserves access"), which should take care
    of any theoretical concerns on that front.
    Revert this patch, and the follow-up that suppresses the allocation
    warnings when we fail the allocations due to a signal.
    Link: http://lkml.kernel.org/r/20171004185906.GB2136@cmpxchg.org
    Fixes:  171012f5
     ("mm: don't warn when vmalloc() fails due to a fatal signal")
    Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Acked-by: default avatarMichal Hocko <mhocko@suse.com>
    Cc: Alan Cox <alan@llwyncelyn.cymru>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
vmalloc.c 70.2 KB