| From b3a72ca80351917cc23f9e24c35f3c3979d3c121 Mon Sep 17 00:00:00 2001 |
| From: Ard Biesheuvel <ardb@kernel.org> |
| Date: Wed, 1 Sep 2021 08:33:19 +0200 |
| Subject: efi/cper: use stack buffer for error record decoding |
| |
| From: Ard Biesheuvel <ardb@kernel.org> |
| |
| commit b3a72ca80351917cc23f9e24c35f3c3979d3c121 upstream. |
| |
| Joe reports that using a statically allocated buffer for converting CPER |
| error records into human readable text is probably a bad idea. Even |
| though we are not aware of any actual issues, a stack buffer is clearly |
| a better choice here anyway, so let's move the buffer into the stack |
| frames of the two functions that refer to it. |
| |
| Cc: <stable@vger.kernel.org> |
| Reported-by: Joe Perches <joe@perches.com> |
| Signed-off-by: Ard Biesheuvel <ardb@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/firmware/efi/cper.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/firmware/efi/cper.c |
| +++ b/drivers/firmware/efi/cper.c |
| @@ -25,8 +25,6 @@ |
| #include <acpi/ghes.h> |
| #include <ras/ras_event.h> |
| |
| -static char rcd_decode_str[CPER_REC_LEN]; |
| - |
| /* |
| * CPER record ID need to be unique even after reboot, because record |
| * ID is used as index for ERST storage, while CPER records from |
| @@ -313,6 +311,7 @@ const char *cper_mem_err_unpack(struct t |
| struct cper_mem_err_compact *cmem) |
| { |
| const char *ret = trace_seq_buffer_ptr(p); |
| + char rcd_decode_str[CPER_REC_LEN]; |
| |
| if (cper_mem_err_location(cmem, rcd_decode_str)) |
| trace_seq_printf(p, "%s", rcd_decode_str); |
| @@ -327,6 +326,7 @@ static void cper_print_mem(const char *p |
| int len) |
| { |
| struct cper_mem_err_compact cmem; |
| + char rcd_decode_str[CPER_REC_LEN]; |
| |
| /* Don't trust UEFI 2.1/2.2 structure with bad validation bits */ |
| if (len == sizeof(struct cper_sec_mem_err_old) && |