• James Morse's avatar
    ACPI / APEI: Only use queued estatus entry during in_nmi_queue_one_entry() · d9f608dc
    James Morse authored
    
    
    Each struct ghes has an worst-case sized buffer for storing the
    estatus. If an error is being processed by ghes_proc() in process
    context this buffer will be in use. If the error source then triggers
    an NMI-like notification, the same buffer will be used by
    in_nmi_queue_one_entry() to stage the estatus data, before
    __process_error() copys it into a queued estatus entry.
    
    Merge __process_error()s work into in_nmi_queue_one_entry() so that
    the queued estatus entry is used from the beginning. Use the new
    ghes_peek_estatus() to know how much memory to allocate from
    the ghes_estatus_pool before reading the records.
    Reported-by: default avatarBorislav Petkov <bp@suse.de>
    Signed-off-by: default avatarJames Morse <james.morse@arm.com>
    Reviewed-by: default avatarBorislav Petkov <bp@suse.de>
    
    Change since v6:
     * Added a comment explaining the 'ack-error, then goto no_work'.
     * Added missing esatus-clearing, which is necessary after reading the GAS,
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    d9f608dc
ghes.c 33 KB