aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firmware/efivars.c
diff options
context:
space:
mode:
authorChen Gong <gong.chen@linux.intel.com>2011-10-12 12:17:24 -0400
committerTony Luck <tony.luck@intel.com>2011-10-12 12:17:24 -0400
commitb238b8fa93353ab50c9a2b1e2fa47a0ab01c37cd (patch)
treea46a6ce7567d9826ae48c2f3dc5aa0167de1f26c /drivers/firmware/efivars.c
parentabd4d5587be911f63592537284dad78766d97d62 (diff)
pstore: make pstore write function return normal success/fail value
Currently pstore write interface employs record id as return value, but it is not enough because it can't tell caller if the write operation is successful. Pass the record id back via an argument pointer and return zero for success, non-zero for failure. Signed-off-by: Chen Gong <gong.chen@linux.intel.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'drivers/firmware/efivars.c')
-rw-r--r--drivers/firmware/efivars.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
index be8bcb035e2a..8370f72d87ff 100644
--- a/drivers/firmware/efivars.c
+++ b/drivers/firmware/efivars.c
@@ -490,8 +490,8 @@ static ssize_t efi_pstore_read(u64 *id, enum pstore_type_id *type,
490 return 0; 490 return 0;
491} 491}
492 492
493static u64 efi_pstore_write(enum pstore_type_id type, unsigned int part, 493static int efi_pstore_write(enum pstore_type_id type, u64 *id,
494 size_t size, struct pstore_info *psi) 494 unsigned int part, size_t size, struct pstore_info *psi)
495{ 495{
496 char name[DUMP_NAME_LEN]; 496 char name[DUMP_NAME_LEN];
497 char stub_name[DUMP_NAME_LEN]; 497 char stub_name[DUMP_NAME_LEN];
@@ -499,7 +499,7 @@ static u64 efi_pstore_write(enum pstore_type_id type, unsigned int part,
499 efi_guid_t vendor = LINUX_EFI_CRASH_GUID; 499 efi_guid_t vendor = LINUX_EFI_CRASH_GUID;
500 struct efivars *efivars = psi->data; 500 struct efivars *efivars = psi->data;
501 struct efivar_entry *entry, *found = NULL; 501 struct efivar_entry *entry, *found = NULL;
502 int i; 502 int i, ret = 0;
503 503
504 sprintf(stub_name, "dump-type%u-%u-", type, part); 504 sprintf(stub_name, "dump-type%u-%u-", type, part);
505 sprintf(name, "%s%lu", stub_name, get_seconds()); 505 sprintf(name, "%s%lu", stub_name, get_seconds());
@@ -548,18 +548,19 @@ static u64 efi_pstore_write(enum pstore_type_id type, unsigned int part,
548 efivar_unregister(found); 548 efivar_unregister(found);
549 549
550 if (size) 550 if (size)
551 efivar_create_sysfs_entry(efivars, 551 ret = efivar_create_sysfs_entry(efivars,
552 utf16_strsize(efi_name, 552 utf16_strsize(efi_name,
553 DUMP_NAME_LEN * 2), 553 DUMP_NAME_LEN * 2),
554 efi_name, &vendor); 554 efi_name, &vendor);
555 555
556 return part; 556 *id = part;
557 return ret;
557}; 558};
558 559
559static int efi_pstore_erase(enum pstore_type_id type, u64 id, 560static int efi_pstore_erase(enum pstore_type_id type, u64 id,
560 struct pstore_info *psi) 561 struct pstore_info *psi)
561{ 562{
562 efi_pstore_write(type, id, 0, psi); 563 efi_pstore_write(type, &id, (unsigned int)id, 0, psi);
563 564
564 return 0; 565 return 0;
565} 566}
@@ -580,8 +581,8 @@ static ssize_t efi_pstore_read(u64 *id, enum pstore_type_id *type,
580 return -1; 581 return -1;
581} 582}
582 583
583static u64 efi_pstore_write(enum pstore_type_id type, unsigned int part, 584static int efi_pstore_write(enum pstore_type_id type, u64 *id,
584 size_t size, struct pstore_info *psi) 585 unsigned int part, size_t size, struct pstore_info *psi)
585{ 586{
586 return 0; 587 return 0;
587} 588}