aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firmware
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-11-01 13:52:29 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-11-01 13:52:29 -0400
commit1c398651518c7e25a9fb3f08b456c73d5ca22469 (patch)
tree116ad4df5c8faa5f8e0d7982c479bf08ea01f2ec /drivers/firmware
parentf470f8d4e702593ee1d0852871ad80373bce707b (diff)
parentb238b8fa93353ab50c9a2b1e2fa47a0ab01c37cd (diff)
Merge branch 'pstore' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux
* 'pstore' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux: pstore: make pstore write function return normal success/fail value pstore: change mutex locking to spin_locks pstore: defer inserting OOPS entries into pstore
Diffstat (limited to 'drivers/firmware')
-rw-r--r--drivers/firmware/efivars.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
index eb80b549ed8..8370f72d87f 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}
@@ -978,7 +979,7 @@ int register_efivars(struct efivars *efivars,
978 if (efivars->efi_pstore_info.buf) { 979 if (efivars->efi_pstore_info.buf) {
979 efivars->efi_pstore_info.bufsize = 1024; 980 efivars->efi_pstore_info.bufsize = 1024;
980 efivars->efi_pstore_info.data = efivars; 981 efivars->efi_pstore_info.data = efivars;
981 mutex_init(&efivars->efi_pstore_info.buf_mutex); 982 spin_lock_init(&efivars->efi_pstore_info.buf_lock);
982 pstore_register(&efivars->efi_pstore_info); 983 pstore_register(&efivars->efi_pstore_info);
983 } 984 }
984 985