Loading drivers/acpi/apei/erst.c +3 −5 Original line number Diff line number Diff line Loading @@ -927,8 +927,7 @@ 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(struct pstore_record *record); static int erst_clearer(enum pstore_type_id type, u64 id, int count, struct timespec time, struct pstore_info *psi); static int erst_clearer(struct pstore_record *record); static struct pstore_info erst_info = { .owner = THIS_MODULE, Loading Loading @@ -1100,10 +1099,9 @@ static int erst_writer(struct pstore_record *record) return ret; } static int erst_clearer(enum pstore_type_id type, u64 id, int count, struct timespec time, struct pstore_info *psi) static int erst_clearer(struct pstore_record *record) { return erst_clear(id); return erst_clear(record->id); } static int __init erst_init(void) Loading drivers/firmware/efi/efi-pstore.c +11 −15 Original line number Diff line number Diff line Loading @@ -266,10 +266,7 @@ static int efi_pstore_write(struct pstore_record *record) }; struct pstore_erase_data { u64 id; enum pstore_type_id type; int count; struct timespec time; struct pstore_record *record; efi_char16_t *name; }; Loading @@ -295,8 +292,9 @@ static int efi_pstore_erase_func(struct efivar_entry *entry, void *data) * Check if an old format, which doesn't support * holding multiple logs, remains. */ sprintf(name_old, "dump-type%u-%u-%lu", ed->type, (unsigned int)ed->id, ed->time.tv_sec); snprintf(name_old, sizeof(name_old), "dump-type%u-%u-%lu", ed->record->type, (unsigned int)ed->record->id, ed->record->time.tv_sec); for (i = 0; i < DUMP_NAME_LEN; i++) efi_name_old[i] = name_old[i]; Loading @@ -321,8 +319,7 @@ static int efi_pstore_erase_func(struct efivar_entry *entry, void *data) return 1; } static int efi_pstore_erase(enum pstore_type_id type, u64 id, int count, struct timespec time, struct pstore_info *psi) static int efi_pstore_erase(struct pstore_record *record) { struct pstore_erase_data edata; struct efivar_entry *entry = NULL; Loading @@ -331,17 +328,16 @@ static int efi_pstore_erase(enum pstore_type_id type, u64 id, int count, int found, i; unsigned int part; do_div(id, 1000); part = do_div(id, 100); sprintf(name, "dump-type%u-%u-%d-%lu", type, part, count, time.tv_sec); do_div(record->id, 1000); part = do_div(record->id, 100); snprintf(name, sizeof(name), "dump-type%u-%u-%d-%lu", record->type, record->part, record->count, record->time.tv_sec); for (i = 0; i < DUMP_NAME_LEN; i++) efi_name[i] = name[i]; edata.id = part; edata.type = type; edata.count = count; edata.time = time; edata.record = record; edata.name = efi_name; if (efivar_entry_iter_begin()) Loading fs/pstore/inode.c +5 −7 Original line number Diff line number Diff line Loading @@ -210,14 +210,12 @@ static int pstore_unlink(struct inode *dir, struct dentry *dentry) if (err) return err; if (record->psi->erase) { if (!record->psi->erase) return -EPERM; mutex_lock(&record->psi->read_mutex); record->psi->erase(record->type, record->id, record->count, d_inode(dentry)->i_ctime, record->psi); record->psi->erase(record); mutex_unlock(&record->psi->read_mutex); } else { return -EPERM; } return simple_unlink(dir, dentry); } Loading fs/pstore/ram.c +7 −8 Original line number Diff line number Diff line Loading @@ -469,25 +469,24 @@ static int notrace ramoops_pstore_write_buf_user(enum pstore_type_id type, return -EINVAL; } static int ramoops_pstore_erase(enum pstore_type_id type, u64 id, int count, struct timespec time, struct pstore_info *psi) static int ramoops_pstore_erase(struct pstore_record *record) { struct ramoops_context *cxt = psi->data; struct ramoops_context *cxt = record->psi->data; struct persistent_ram_zone *prz; switch (type) { switch (record->type) { case PSTORE_TYPE_DMESG: if (id >= cxt->max_dump_cnt) if (record->id >= cxt->max_dump_cnt) return -EINVAL; prz = cxt->dprzs[id]; prz = cxt->dprzs[record->id]; break; case PSTORE_TYPE_CONSOLE: prz = cxt->cprz; break; case PSTORE_TYPE_FTRACE: if (id >= cxt->max_ftrace_cnt) if (record->id >= cxt->max_ftrace_cnt) return -EINVAL; prz = cxt->fprzs[id]; prz = cxt->fprzs[record->id]; break; case PSTORE_TYPE_PMSG: prz = cxt->mprz; Loading include/linux/pstore.h +5 −11 Original line number Diff line number Diff line Loading @@ -177,15 +177,11 @@ struct pstore_record { * * @erase: * Delete a record from backend storage. Different backends * identify records differently, so all possible methods of * identification are included to help the backend locate the * record to remove. * identify records differently, so entire original record is * passed back to assist in identification of what the backend * should remove from storage. * * @type: in: pstore record type to write * @id: in: per-type unique identifier for the record * @count: in: Oops count * @time: in: timestamp for the record * @psi: in: pointer to the struct pstore_info for the backend * @record: pointer to record metadata. * * Returns 0 on success, and non-zero on error. * Loading Loading @@ -215,9 +211,7 @@ struct pstore_info { enum kmsg_dump_reason reason, u64 *id, unsigned int part, const char __user *buf, bool compressed, size_t size, struct pstore_info *psi); int (*erase)(enum pstore_type_id type, u64 id, int count, struct timespec time, struct pstore_info *psi); int (*erase)(struct pstore_record *record); }; /* Supported frontends */ Loading Loading
drivers/acpi/apei/erst.c +3 −5 Original line number Diff line number Diff line Loading @@ -927,8 +927,7 @@ 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(struct pstore_record *record); static int erst_clearer(enum pstore_type_id type, u64 id, int count, struct timespec time, struct pstore_info *psi); static int erst_clearer(struct pstore_record *record); static struct pstore_info erst_info = { .owner = THIS_MODULE, Loading Loading @@ -1100,10 +1099,9 @@ static int erst_writer(struct pstore_record *record) return ret; } static int erst_clearer(enum pstore_type_id type, u64 id, int count, struct timespec time, struct pstore_info *psi) static int erst_clearer(struct pstore_record *record) { return erst_clear(id); return erst_clear(record->id); } static int __init erst_init(void) Loading
drivers/firmware/efi/efi-pstore.c +11 −15 Original line number Diff line number Diff line Loading @@ -266,10 +266,7 @@ static int efi_pstore_write(struct pstore_record *record) }; struct pstore_erase_data { u64 id; enum pstore_type_id type; int count; struct timespec time; struct pstore_record *record; efi_char16_t *name; }; Loading @@ -295,8 +292,9 @@ static int efi_pstore_erase_func(struct efivar_entry *entry, void *data) * Check if an old format, which doesn't support * holding multiple logs, remains. */ sprintf(name_old, "dump-type%u-%u-%lu", ed->type, (unsigned int)ed->id, ed->time.tv_sec); snprintf(name_old, sizeof(name_old), "dump-type%u-%u-%lu", ed->record->type, (unsigned int)ed->record->id, ed->record->time.tv_sec); for (i = 0; i < DUMP_NAME_LEN; i++) efi_name_old[i] = name_old[i]; Loading @@ -321,8 +319,7 @@ static int efi_pstore_erase_func(struct efivar_entry *entry, void *data) return 1; } static int efi_pstore_erase(enum pstore_type_id type, u64 id, int count, struct timespec time, struct pstore_info *psi) static int efi_pstore_erase(struct pstore_record *record) { struct pstore_erase_data edata; struct efivar_entry *entry = NULL; Loading @@ -331,17 +328,16 @@ static int efi_pstore_erase(enum pstore_type_id type, u64 id, int count, int found, i; unsigned int part; do_div(id, 1000); part = do_div(id, 100); sprintf(name, "dump-type%u-%u-%d-%lu", type, part, count, time.tv_sec); do_div(record->id, 1000); part = do_div(record->id, 100); snprintf(name, sizeof(name), "dump-type%u-%u-%d-%lu", record->type, record->part, record->count, record->time.tv_sec); for (i = 0; i < DUMP_NAME_LEN; i++) efi_name[i] = name[i]; edata.id = part; edata.type = type; edata.count = count; edata.time = time; edata.record = record; edata.name = efi_name; if (efivar_entry_iter_begin()) Loading
fs/pstore/inode.c +5 −7 Original line number Diff line number Diff line Loading @@ -210,14 +210,12 @@ static int pstore_unlink(struct inode *dir, struct dentry *dentry) if (err) return err; if (record->psi->erase) { if (!record->psi->erase) return -EPERM; mutex_lock(&record->psi->read_mutex); record->psi->erase(record->type, record->id, record->count, d_inode(dentry)->i_ctime, record->psi); record->psi->erase(record); mutex_unlock(&record->psi->read_mutex); } else { return -EPERM; } return simple_unlink(dir, dentry); } Loading
fs/pstore/ram.c +7 −8 Original line number Diff line number Diff line Loading @@ -469,25 +469,24 @@ static int notrace ramoops_pstore_write_buf_user(enum pstore_type_id type, return -EINVAL; } static int ramoops_pstore_erase(enum pstore_type_id type, u64 id, int count, struct timespec time, struct pstore_info *psi) static int ramoops_pstore_erase(struct pstore_record *record) { struct ramoops_context *cxt = psi->data; struct ramoops_context *cxt = record->psi->data; struct persistent_ram_zone *prz; switch (type) { switch (record->type) { case PSTORE_TYPE_DMESG: if (id >= cxt->max_dump_cnt) if (record->id >= cxt->max_dump_cnt) return -EINVAL; prz = cxt->dprzs[id]; prz = cxt->dprzs[record->id]; break; case PSTORE_TYPE_CONSOLE: prz = cxt->cprz; break; case PSTORE_TYPE_FTRACE: if (id >= cxt->max_ftrace_cnt) if (record->id >= cxt->max_ftrace_cnt) return -EINVAL; prz = cxt->fprzs[id]; prz = cxt->fprzs[record->id]; break; case PSTORE_TYPE_PMSG: prz = cxt->mprz; Loading
include/linux/pstore.h +5 −11 Original line number Diff line number Diff line Loading @@ -177,15 +177,11 @@ struct pstore_record { * * @erase: * Delete a record from backend storage. Different backends * identify records differently, so all possible methods of * identification are included to help the backend locate the * record to remove. * identify records differently, so entire original record is * passed back to assist in identification of what the backend * should remove from storage. * * @type: in: pstore record type to write * @id: in: per-type unique identifier for the record * @count: in: Oops count * @time: in: timestamp for the record * @psi: in: pointer to the struct pstore_info for the backend * @record: pointer to record metadata. * * Returns 0 on success, and non-zero on error. * Loading Loading @@ -215,9 +211,7 @@ struct pstore_info { enum kmsg_dump_reason reason, u64 *id, unsigned int part, const char __user *buf, bool compressed, size_t size, struct pstore_info *psi); int (*erase)(enum pstore_type_id type, u64 id, int count, struct timespec time, struct pstore_info *psi); int (*erase)(struct pstore_record *record); }; /* Supported frontends */ Loading