Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754177AbcCUJnU (ORCPT ); Mon, 21 Mar 2016 05:43:20 -0400 Received: from mail-ig0-f179.google.com ([209.85.213.179]:35685 "EHLO mail-ig0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754091AbcCUJnG (ORCPT ); Mon, 21 Mar 2016 05:43:06 -0400 MIME-Version: 1.0 In-Reply-To: <1458219431-24741-2-git-send-email-matt@codeblueprint.co.uk> References: <1458219431-24741-1-git-send-email-matt@codeblueprint.co.uk> <1458219431-24741-2-git-send-email-matt@codeblueprint.co.uk> Date: Mon, 21 Mar 2016 10:43:04 +0100 Message-ID: Subject: Re: [PATCH 1/4] efi: Move efi_status_to_err() to drivers/firmware/efi/ From: Ard Biesheuvel To: Matt Fleming Cc: "linux-efi@vger.kernel.org" , "linux-kernel@vger.kernel.org" , joeyli , Kweh Hock Leong , Borislav Petkov Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3624 Lines: 119 On 17 March 2016 at 13:57, Matt Fleming wrote: > Move efi_status_to_err() to the architecture independent code as it's > generally useful in all bits of EFI code where there is a need to > convert an efi_status_t to a kernel error value. > > Cc: Kweh Hock Leong > Cc: Borislav Petkov > Cc: Ard Biesheuvel > Signed-off-by: Matt Fleming Acked-by: Ard Biesheuvel > --- > drivers/firmware/efi/efi.c | 33 +++++++++++++++++++++++++++++++++ > drivers/firmware/efi/vars.c | 33 --------------------------------- > include/linux/efi.h | 2 ++ > 3 files changed, 35 insertions(+), 33 deletions(-) > > diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c > index 3a69ed5ecfcb..b73222a52a9d 100644 > --- a/drivers/firmware/efi/efi.c > +++ b/drivers/firmware/efi/efi.c > @@ -637,3 +637,36 @@ u64 __weak efi_mem_attributes(unsigned long phys_addr) > } > return 0; > } > + > +int efi_status_to_err(efi_status_t status) > +{ > + int err; > + > + switch (status) { > + case EFI_SUCCESS: > + err = 0; > + break; > + case EFI_INVALID_PARAMETER: > + err = -EINVAL; > + break; > + case EFI_OUT_OF_RESOURCES: > + err = -ENOSPC; > + break; > + case EFI_DEVICE_ERROR: > + err = -EIO; > + break; > + case EFI_WRITE_PROTECTED: > + err = -EROFS; > + break; > + case EFI_SECURITY_VIOLATION: > + err = -EACCES; > + break; > + case EFI_NOT_FOUND: > + err = -ENOENT; > + break; > + default: > + err = -EINVAL; > + } > + > + return err; > +} > diff --git a/drivers/firmware/efi/vars.c b/drivers/firmware/efi/vars.c > index 0ac594c0a234..4911d5697844 100644 > --- a/drivers/firmware/efi/vars.c > +++ b/drivers/firmware/efi/vars.c > @@ -314,39 +314,6 @@ check_var_size_nonblocking(u32 attributes, unsigned long size) > return fops->query_variable_store(attributes, size, true); > } > > -static int efi_status_to_err(efi_status_t status) > -{ > - int err; > - > - switch (status) { > - case EFI_SUCCESS: > - err = 0; > - break; > - case EFI_INVALID_PARAMETER: > - err = -EINVAL; > - break; > - case EFI_OUT_OF_RESOURCES: > - err = -ENOSPC; > - break; > - case EFI_DEVICE_ERROR: > - err = -EIO; > - break; > - case EFI_WRITE_PROTECTED: > - err = -EROFS; > - break; > - case EFI_SECURITY_VIOLATION: > - err = -EACCES; > - break; > - case EFI_NOT_FOUND: > - err = -ENOENT; > - break; > - default: > - err = -EINVAL; > - } > - > - return err; > -} > - > static bool variable_is_present(efi_char16_t *variable_name, efi_guid_t *vendor, > struct list_head *head) > { > diff --git a/include/linux/efi.h b/include/linux/efi.h > index c55c452b991a..9c8aae0e3b51 100644 > --- a/include/linux/efi.h > +++ b/include/linux/efi.h > @@ -1023,6 +1023,8 @@ static inline void > efi_reboot(enum reboot_mode reboot_mode, const char *__unused) {} > #endif > > +extern int efi_status_to_err(efi_status_t status); > + > /* > * Variable Attributes > */ > -- > 2.6.2 >