aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@intel.com>2013-04-29 15:08:02 -0400
committerMatt Fleming <matt.fleming@intel.com>2013-04-30 11:03:10 -0400
commit8a415b8c05f261a52f45f2271b6c4731376fd5b5 (patch)
treede233c9382c3f4a08fcdd1b26be38810fdf2ce25 /include
parent12abcfde1ad3ee9bed726d25fdd4eeb31026b187 (diff)
efi, pstore: Read data from variable store before memcpy()
Seiji reported getting empty dmesg-* files, because the data was never actually read in efi_pstore_read_func(), and so the memcpy() was copying garbage data. This patch necessitated adding __efivar_entry_get() which is callable between efivar_entry_iter_{begin,end}(). We can also delete __efivar_entry_size() because efi_pstore_read_func() was the only caller. Reported-by: Seiji Aguchi <seiji.aguchi@hds.com> Tested-by: Seiji Aguchi <seiji.aguchi@hds.com> Cc: Tony Luck <tony.luck@intel.com> Cc: Matthew Garrett <matthew.garrett@nebula.com> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/efi.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/efi.h b/include/linux/efi.h
index 3f7257f1f5e8..2bc0ad78d058 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
@@ -808,8 +808,9 @@ void efivar_entry_remove(struct efivar_entry *entry);
808int __efivar_entry_delete(struct efivar_entry *entry); 808int __efivar_entry_delete(struct efivar_entry *entry);
809int efivar_entry_delete(struct efivar_entry *entry); 809int efivar_entry_delete(struct efivar_entry *entry);
810 810
811int __efivar_entry_size(struct efivar_entry *entry, unsigned long *size);
812int efivar_entry_size(struct efivar_entry *entry, unsigned long *size); 811int efivar_entry_size(struct efivar_entry *entry, unsigned long *size);
812int __efivar_entry_get(struct efivar_entry *entry, u32 *attributes,
813 unsigned long *size, void *data);
813int efivar_entry_get(struct efivar_entry *entry, u32 *attributes, 814int efivar_entry_get(struct efivar_entry *entry, u32 *attributes,
814 unsigned long *size, void *data); 815 unsigned long *size, void *data);
815int efivar_entry_set(struct efivar_entry *entry, u32 attributes, 816int efivar_entry_set(struct efivar_entry *entry, u32 attributes,