• Baoquan He's avatar
    Crash: add lock to serialize crash hotplug handling · e2a8f20d
    Baoquan He authored
    Eric reported that handling corresponding crash hotplug event can be
    failed easily when many memory hotplug event are notified in a short
    period.  They failed because failing to take __kexec_lock.
    
    =======
    [   78.714569] Fallback order for Node 0: 0
    [   78.714575] Built 1 zonelists, mobility grouping on.  Total pages: 1817886
    [   78.717133] Policy zone: Normal
    [   78.724423] crash hp: kexec_trylock() failed, elfcorehdr may be inaccurate
    [   78.727207] crash hp: kexec_trylock() failed, elfcorehdr may be inaccurate
    [   80.056643] PEFILE: Unsigned PE binary
    =======
    
    The memory hotplug events are notified very quickly and very many, while
    the handling of crash hotplug is much slower relatively.  So the atomic
    variable __kexec_lock and kexec_trylock() can't guarantee the
    serialization of crash hotplug handling.
    
    Here, add a new mutex lock __crash_hotplug_lock to serialize crash hotplug
    handling specifically.  This doesn't impact the usage of __kexec_lock.
    
    Link: https://lkml.kernel.org/r/20230926120905.392903-1-bhe@redhat.com
    Fixes: 24726275 ("crash: add generic infrastructure for crash hotplug support")
    Signed-off-by: default avatarBaoquan He <bhe@redhat.com>
    Tested-by: default avatarEric DeVolder <eric.devolder@oracle.com>
    Reviewed-by: default avatarEric DeVolder <eric.devolder@oracle.com>
    Reviewed-by: default avatarValentin Schneider <vschneid@redhat.com>
    Cc: Sourabh Jain <sourabhjain@linux.ibm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    e2a8f20d
crash_core.c 23.8 KB