aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/apei
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/acpi/apei
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/acpi/apei')
-rw-r--r--drivers/acpi/apei/erst.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c
index 5e820ea35570..127408069ca7 100644
--- a/drivers/acpi/apei/erst.c
+++ b/drivers/acpi/apei/erst.c
@@ -933,7 +933,7 @@ static int erst_open_pstore(struct pstore_info *psi);
933static int erst_close_pstore(struct pstore_info *psi); 933static int erst_close_pstore(struct pstore_info *psi);
934static ssize_t erst_reader(u64 *id, enum pstore_type_id *type, 934static ssize_t erst_reader(u64 *id, enum pstore_type_id *type,
935 struct timespec *time, struct pstore_info *psi); 935 struct timespec *time, struct pstore_info *psi);
936static u64 erst_writer(enum pstore_type_id type, unsigned int part, 936static int erst_writer(enum pstore_type_id type, u64 *id, unsigned int part,
937 size_t size, struct pstore_info *psi); 937 size_t size, struct pstore_info *psi);
938static int erst_clearer(enum pstore_type_id type, u64 id, 938static int erst_clearer(enum pstore_type_id type, u64 id,
939 struct pstore_info *psi); 939 struct pstore_info *psi);
@@ -1040,11 +1040,12 @@ out:
1040 return (rc < 0) ? rc : (len - sizeof(*rcd)); 1040 return (rc < 0) ? rc : (len - sizeof(*rcd));
1041} 1041}
1042 1042
1043static u64 erst_writer(enum pstore_type_id type, unsigned int part, 1043static int erst_writer(enum pstore_type_id type, u64 *id, unsigned int part,
1044 size_t size, struct pstore_info *psi) 1044 size_t size, struct pstore_info *psi)
1045{ 1045{
1046 struct cper_pstore_record *rcd = (struct cper_pstore_record *) 1046 struct cper_pstore_record *rcd = (struct cper_pstore_record *)
1047 (erst_info.buf - sizeof(*rcd)); 1047 (erst_info.buf - sizeof(*rcd));
1048 int ret;
1048 1049
1049 memset(rcd, 0, sizeof(*rcd)); 1050 memset(rcd, 0, sizeof(*rcd));
1050 memcpy(rcd->hdr.signature, CPER_SIG_RECORD, CPER_SIG_SIZE); 1051 memcpy(rcd->hdr.signature, CPER_SIG_RECORD, CPER_SIG_SIZE);
@@ -1079,9 +1080,10 @@ static u64 erst_writer(enum pstore_type_id type, unsigned int part,
1079 } 1080 }
1080 rcd->sec_hdr.section_severity = CPER_SEV_FATAL; 1081 rcd->sec_hdr.section_severity = CPER_SEV_FATAL;
1081 1082
1082 erst_write(&rcd->hdr); 1083 ret = erst_write(&rcd->hdr);
1084 *id = rcd->hdr.record_id;
1083 1085
1084 return rcd->hdr.record_id; 1086 return ret;
1085} 1087}
1086 1088
1087static int erst_clearer(enum pstore_type_id type, u64 id, 1089static int erst_clearer(enum pstore_type_id type, u64 id,