pstore: Replace arguments for write() API
Similar to the pstore_info read() callback, there were too many arguments. This switches to the new struct pstore_record pointer instead. This adds "reason" and "part" to the record structure as well. Signed-off-by: Kees Cook <keescook@chromium.org>
此提交包含在:
@@ -926,9 +926,7 @@ static int erst_check_table(struct acpi_table_erst *erst_tab)
|
||||
static int erst_open_pstore(struct pstore_info *psi);
|
||||
static int erst_close_pstore(struct pstore_info *psi);
|
||||
static ssize_t erst_reader(struct pstore_record *record);
|
||||
static int erst_writer(enum pstore_type_id type, enum kmsg_dump_reason reason,
|
||||
u64 *id, unsigned int part, int count, bool compressed,
|
||||
size_t size, struct pstore_info *psi);
|
||||
static int erst_writer(struct pstore_record *record);
|
||||
static int erst_clearer(enum pstore_type_id type, u64 id, int count,
|
||||
struct timespec time, struct pstore_info *psi);
|
||||
|
||||
@@ -1054,9 +1052,7 @@ out:
|
||||
return (rc < 0) ? rc : (len - sizeof(*rcd));
|
||||
}
|
||||
|
||||
static int erst_writer(enum pstore_type_id type, enum kmsg_dump_reason reason,
|
||||
u64 *id, unsigned int part, int count, bool compressed,
|
||||
size_t size, struct pstore_info *psi)
|
||||
static int erst_writer(struct pstore_record *record)
|
||||
{
|
||||
struct cper_pstore_record *rcd = (struct cper_pstore_record *)
|
||||
(erst_info.buf - sizeof(*rcd));
|
||||
@@ -1071,21 +1067,21 @@ static int erst_writer(enum pstore_type_id type, enum kmsg_dump_reason reason,
|
||||
/* timestamp valid. platform_id, partition_id are invalid */
|
||||
rcd->hdr.validation_bits = CPER_VALID_TIMESTAMP;
|
||||
rcd->hdr.timestamp = get_seconds();
|
||||
rcd->hdr.record_length = sizeof(*rcd) + size;
|
||||
rcd->hdr.record_length = sizeof(*rcd) + record->size;
|
||||
rcd->hdr.creator_id = CPER_CREATOR_PSTORE;
|
||||
rcd->hdr.notification_type = CPER_NOTIFY_MCE;
|
||||
rcd->hdr.record_id = cper_next_record_id();
|
||||
rcd->hdr.flags = CPER_HW_ERROR_FLAGS_PREVERR;
|
||||
|
||||
rcd->sec_hdr.section_offset = sizeof(*rcd);
|
||||
rcd->sec_hdr.section_length = size;
|
||||
rcd->sec_hdr.section_length = record->size;
|
||||
rcd->sec_hdr.revision = CPER_SEC_REV;
|
||||
/* fru_id and fru_text is invalid */
|
||||
rcd->sec_hdr.validation_bits = 0;
|
||||
rcd->sec_hdr.flags = CPER_SEC_PRIMARY;
|
||||
switch (type) {
|
||||
switch (record->type) {
|
||||
case PSTORE_TYPE_DMESG:
|
||||
if (compressed)
|
||||
if (record->compressed)
|
||||
rcd->sec_hdr.section_type = CPER_SECTION_TYPE_DMESG_Z;
|
||||
else
|
||||
rcd->sec_hdr.section_type = CPER_SECTION_TYPE_DMESG;
|
||||
@@ -1099,7 +1095,7 @@ static int erst_writer(enum pstore_type_id type, enum kmsg_dump_reason reason,
|
||||
rcd->sec_hdr.section_severity = CPER_SEV_FATAL;
|
||||
|
||||
ret = erst_write(&rcd->hdr);
|
||||
*id = rcd->hdr.record_id;
|
||||
record->id = rcd->hdr.record_id;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
新增問題並參考
封鎖使用者