diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-01-31 01:10:36 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-01-31 01:10:36 -0500 |
commit | 04c2eee5b9dfcb13f3cd07a5537fb8c785f2751a (patch) | |
tree | a70cf1df64b3715c502211233dc307abacaed7da /drivers/firmware | |
parent | bdb0ae6a767ef2622eb282e06fc225e855341653 (diff) | |
parent | becbd6608026c15afd88fd3d0c893dfb7b8c7845 (diff) |
Merge branch 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 EFI fixes from Peter Anvin:
"This is a collection of fixes for the EFI support. The controversial
bit here is a set of patches which bumps the boot protocol version as
part of fixing some serious problems with the EFI handover protocol,
used when booting under EFI using a bootloader as opposed to directly
from EFI. These changes should also make it a lot saner to support
cross-mode 32/64-bit EFI booting in the future. Getting these changes
into 3.8 means we avoid presenting an inconsistent ABI to bootloaders.
Other changes are display detection and fixing efivarfs."
* 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86, efi: remove attribute check from setup_efi_pci
x86, build: Dynamically find entry points in compressed startup code
x86, efi: Fix PCI ROM handing in EFI boot stub, in 32-bit mode
x86, efi: Fix 32-bit EFI handover protocol entry point
x86, efi: Fix display detection in EFI boot stub
x86, boot: Define the 2.12 bzImage boot protocol
x86/boot: Fix minor fd leakage in tools/relocs.c
x86, efi: Set runtime_version to the EFI spec revision
x86, efi: fix 32-bit warnings in setup_efi_pci()
efivarfs: Delete dentry from dcache in efivarfs_file_write()
efivarfs: Never return ENOENT from firmware
efi, x86: Pass a proper identity mapping in efi_call_phys_prelog
efivarfs: Drop link count of the right inode
Diffstat (limited to 'drivers/firmware')
-rw-r--r-- | drivers/firmware/efivars.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c index 1065119dff92..f5596db0cf58 100644 --- a/drivers/firmware/efivars.c +++ b/drivers/firmware/efivars.c | |||
@@ -674,7 +674,7 @@ static int efi_status_to_err(efi_status_t status) | |||
674 | err = -EACCES; | 674 | err = -EACCES; |
675 | break; | 675 | break; |
676 | case EFI_NOT_FOUND: | 676 | case EFI_NOT_FOUND: |
677 | err = -ENOENT; | 677 | err = -EIO; |
678 | break; | 678 | break; |
679 | default: | 679 | default: |
680 | err = -EINVAL; | 680 | err = -EINVAL; |
@@ -793,6 +793,7 @@ static ssize_t efivarfs_file_write(struct file *file, | |||
793 | spin_unlock(&efivars->lock); | 793 | spin_unlock(&efivars->lock); |
794 | efivar_unregister(var); | 794 | efivar_unregister(var); |
795 | drop_nlink(inode); | 795 | drop_nlink(inode); |
796 | d_delete(file->f_dentry); | ||
796 | dput(file->f_dentry); | 797 | dput(file->f_dentry); |
797 | 798 | ||
798 | } else { | 799 | } else { |
@@ -994,7 +995,7 @@ static int efivarfs_unlink(struct inode *dir, struct dentry *dentry) | |||
994 | list_del(&var->list); | 995 | list_del(&var->list); |
995 | spin_unlock(&efivars->lock); | 996 | spin_unlock(&efivars->lock); |
996 | efivar_unregister(var); | 997 | efivar_unregister(var); |
997 | drop_nlink(dir); | 998 | drop_nlink(dentry->d_inode); |
998 | dput(dentry); | 999 | dput(dentry); |
999 | return 0; | 1000 | return 0; |
1000 | } | 1001 | } |