On Mon, Dec 03, 2018 at 06:06:07PM +0000, James Morse wrote: > 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_notify_one() to stage the estatus data, before > __process_error() copys it into a queued estatus entry. > > Merge __process_error()s work into _in_nmi_notify_one() 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: Borislav Petkov <bp@xxxxxxx> > Signed-off-by: James Morse <james.morse@xxxxxxx> > > 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, > --- > drivers/acpi/apei/ghes.c | 59 ++++++++++++++++++++++++---------------- > 1 file changed, 35 insertions(+), 24 deletions(-) Reviewed-by: Borislav Petkov <bp@xxxxxxx> -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply.