Re: [PATCH 1/2] efi: add a function for transferring status to string
From: Mimi Zohar <zohar@linux.ibm.com>
Date: 2019-03-27 19:04:24
Also in:
linux-efi, lkml
On Wed, 2019-03-27 at 19:58 +0100, Ard Biesheuvel wrote:
On Sun, 24 Mar 2019 at 01:26, Lee, Chun-Yi [off-list ref] wrote:quoted
This function can be used to transfer EFI status code to string for printing out debug message. Using this function can improve the readability of log.
Maybe instead of "for transferring status" use "to convert the status value to a" in the Subject line and here in the patch description.
quoted
Cc: Ard Biesheuvel <redacted> Cc: Kees Cook <redacted> Cc: Anton Vorontsov <redacted> Cc: Colin Cross <redacted> Cc: Tony Luck <tony.luck@intel.com> Signed-off-by: "Lee, Chun-Yi" <jlee@suse.com> --- include/linux/efi.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)diff --git a/include/linux/efi.h b/include/linux/efi.h index 54357a258b35..a43cb0dc37af 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h@@ -1768,4 +1768,32 @@ struct linux_efi_memreserve { #define EFI_MEMRESERVE_COUNT(size) (((size) - sizeof(struct linux_efi_memreserve)) \ / sizeof(((struct linux_efi_memreserve *)0)->entry[0])) +#define EFI_STATUS_STR(_status) \ +case EFI_##_status: \ + return "EFI_" __stringify(_status); + +static inline char * +efi_status_to_str(efi_status_t status) +{ + switch (status) { + EFI_STATUS_STR(SUCCESS) + EFI_STATUS_STR(LOAD_ERROR) + EFI_STATUS_STR(INVALID_PARAMETER) + EFI_STATUS_STR(UNSUPPORTED) + EFI_STATUS_STR(BAD_BUFFER_SIZE) + EFI_STATUS_STR(BUFFER_TOO_SMALL) + EFI_STATUS_STR(NOT_READY) + EFI_STATUS_STR(DEVICE_ERROR) + EFI_STATUS_STR(WRITE_PROTECTED) + EFI_STATUS_STR(OUT_OF_RESOURCES) + EFI_STATUS_STR(NOT_FOUND) + EFI_STATUS_STR(ABORTED) + EFI_STATUS_STR(SECURITY_VIOLATION) + default: + pr_warn("Unknown efi status: 0x%lx", status); + } + + return "Unknown efi status"; +} + #endif /* _LINUX_EFI_H */ --2.16.4Please turn this into a proper function so that not every calling object has to duplicate all these strings.
Hi Ard, Keeping the status values and strings in sync is difficult. I was going to suggest moving the macro immediately after the status value definitions. Mimi