aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firmware
diff options
context:
space:
mode:
authorMatt Fleming <matt@codeblueprint.co.uk>2016-04-25 16:06:58 -0400
committerIngo Molnar <mingo@kernel.org>2016-04-28 05:34:03 -0400
commit806b0351c9ff9890c1ef0ba2c46237baef49ac79 (patch)
treeec1a82709839331cd57e66e25cde7ec09e357657 /drivers/firmware
parent06f7d4a1618dbb086e738c93cd1ef416ab01027d (diff)
efi: Move efi_status_to_err() to drivers/firmware/efi/
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. Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk> Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Kweh Hock Leong <hock.leong.kweh@intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: joeyli <jlee@suse.com> Cc: linux-efi@vger.kernel.org Link: http://lkml.kernel.org/r/1461614832-17633-27-git-send-email-matt@codeblueprint.co.uk Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/firmware')
-rw-r--r--drivers/firmware/efi/efi.c33
-rw-r--r--drivers/firmware/efi/vars.c33
2 files changed, 33 insertions, 33 deletions
diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
index 4991371012b4..05509f3aaee8 100644
--- a/drivers/firmware/efi/efi.c
+++ b/drivers/firmware/efi/efi.c
@@ -636,3 +636,36 @@ u64 __weak efi_mem_attributes(unsigned long phys_addr)
636 } 636 }
637 return 0; 637 return 0;
638} 638}
639
640int efi_status_to_err(efi_status_t status)
641{
642 int err;
643
644 switch (status) {
645 case EFI_SUCCESS:
646 err = 0;
647 break;
648 case EFI_INVALID_PARAMETER:
649 err = -EINVAL;
650 break;
651 case EFI_OUT_OF_RESOURCES:
652 err = -ENOSPC;
653 break;
654 case EFI_DEVICE_ERROR:
655 err = -EIO;
656 break;
657 case EFI_WRITE_PROTECTED:
658 err = -EROFS;
659 break;
660 case EFI_SECURITY_VIOLATION:
661 err = -EACCES;
662 break;
663 case EFI_NOT_FOUND:
664 err = -ENOENT;
665 break;
666 default:
667 err = -EINVAL;
668 }
669
670 return err;
671}
diff --git a/drivers/firmware/efi/vars.c b/drivers/firmware/efi/vars.c
index 34b741940494..0012331d5a3d 100644
--- a/drivers/firmware/efi/vars.c
+++ b/drivers/firmware/efi/vars.c
@@ -329,39 +329,6 @@ check_var_size_nonblocking(u32 attributes, unsigned long size)
329 return fops->query_variable_store(attributes, size, true); 329 return fops->query_variable_store(attributes, size, true);
330} 330}
331 331
332static int efi_status_to_err(efi_status_t status)
333{
334 int err;
335
336 switch (status) {
337 case EFI_SUCCESS:
338 err = 0;
339 break;
340 case EFI_INVALID_PARAMETER:
341 err = -EINVAL;
342 break;
343 case EFI_OUT_OF_RESOURCES:
344 err = -ENOSPC;
345 break;
346 case EFI_DEVICE_ERROR:
347 err = -EIO;
348 break;
349 case EFI_WRITE_PROTECTED:
350 err = -EROFS;
351 break;
352 case EFI_SECURITY_VIOLATION:
353 err = -EACCES;
354 break;
355 case EFI_NOT_FOUND:
356 err = -ENOENT;
357 break;
358 default:
359 err = -EINVAL;
360 }
361
362 return err;
363}
364
365static bool variable_is_present(efi_char16_t *variable_name, efi_guid_t *vendor, 332static bool variable_is_present(efi_char16_t *variable_name, efi_guid_t *vendor,
366 struct list_head *head) 333 struct list_head *head)
367{ 334{