Loading fs/pstore/internal.h +2 −0 Original line number Diff line number Diff line Loading @@ -30,5 +30,7 @@ extern void pstore_get_backend_records(struct pstore_info *psi, extern int pstore_mkfile(struct dentry *root, struct pstore_record *record); extern bool pstore_is_mounted(void); extern void pstore_record_init(struct pstore_record *record, struct pstore_info *psi); #endif fs/pstore/platform.c +21 −14 Original line number Diff line number Diff line Loading @@ -474,6 +474,14 @@ static size_t copy_kmsg_to_buffer(int hsize, size_t len) return total_len; } void pstore_record_init(struct pstore_record *record, struct pstore_info *psinfo) { memset(record, 0, sizeof(*record)); record->psi = psinfo; } /* * callback from kmsg_dump. (s2,l2) has the most recently * written bytes, older bytes are in (s1,l1). Save as much Loading Loading @@ -509,15 +517,14 @@ static void pstore_dump(struct kmsg_dumper *dumper, int header_size; int zipped_len = -1; size_t dump_size; struct pstore_record record = { .type = PSTORE_TYPE_DMESG, .count = oopscount, .reason = reason, .part = part, .compressed = false, .buf = psinfo->buf, .psi = psinfo, }; struct pstore_record record; pstore_record_init(&record, psinfo); record.type = PSTORE_TYPE_DMESG; record.count = oopscount; record.reason = reason; record.part = part; record.buf = psinfo->buf; if (big_oops_buf && is_locked) { dst = big_oops_buf; Loading Loading @@ -587,12 +594,12 @@ static void pstore_console_write(struct console *con, const char *s, unsigned c) const char *e = s + c; while (s < e) { struct pstore_record record = { .type = PSTORE_TYPE_CONSOLE, .psi = psinfo, }; struct pstore_record record; unsigned long flags; pstore_record_init(&record, psinfo); record.type = PSTORE_TYPE_CONSOLE; if (c > psinfo->bufsize) c = psinfo->bufsize; Loading Loading @@ -845,7 +852,7 @@ void pstore_get_backend_records(struct pstore_info *psi, pr_err("out of memory creating record\n"); break; } record->psi = psi; pstore_record_init(record, psi); record->size = psi->read(record); Loading fs/pstore/pmsg.c +5 −5 Original line number Diff line number Diff line Loading @@ -22,16 +22,16 @@ static DEFINE_MUTEX(pmsg_lock); static ssize_t write_pmsg(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { struct pstore_record record = { .type = PSTORE_TYPE_PMSG, .size = count, .psi = psinfo, }; struct pstore_record record; int ret; if (!count) return 0; pstore_record_init(&record, psinfo); record.type = PSTORE_TYPE_PMSG; record.size = count; /* check outside lock, page in any data. write_user also checks */ if (!access_ok(VERIFY_READ, buf, count)) return -EFAULT; Loading Loading
fs/pstore/internal.h +2 −0 Original line number Diff line number Diff line Loading @@ -30,5 +30,7 @@ extern void pstore_get_backend_records(struct pstore_info *psi, extern int pstore_mkfile(struct dentry *root, struct pstore_record *record); extern bool pstore_is_mounted(void); extern void pstore_record_init(struct pstore_record *record, struct pstore_info *psi); #endif
fs/pstore/platform.c +21 −14 Original line number Diff line number Diff line Loading @@ -474,6 +474,14 @@ static size_t copy_kmsg_to_buffer(int hsize, size_t len) return total_len; } void pstore_record_init(struct pstore_record *record, struct pstore_info *psinfo) { memset(record, 0, sizeof(*record)); record->psi = psinfo; } /* * callback from kmsg_dump. (s2,l2) has the most recently * written bytes, older bytes are in (s1,l1). Save as much Loading Loading @@ -509,15 +517,14 @@ static void pstore_dump(struct kmsg_dumper *dumper, int header_size; int zipped_len = -1; size_t dump_size; struct pstore_record record = { .type = PSTORE_TYPE_DMESG, .count = oopscount, .reason = reason, .part = part, .compressed = false, .buf = psinfo->buf, .psi = psinfo, }; struct pstore_record record; pstore_record_init(&record, psinfo); record.type = PSTORE_TYPE_DMESG; record.count = oopscount; record.reason = reason; record.part = part; record.buf = psinfo->buf; if (big_oops_buf && is_locked) { dst = big_oops_buf; Loading Loading @@ -587,12 +594,12 @@ static void pstore_console_write(struct console *con, const char *s, unsigned c) const char *e = s + c; while (s < e) { struct pstore_record record = { .type = PSTORE_TYPE_CONSOLE, .psi = psinfo, }; struct pstore_record record; unsigned long flags; pstore_record_init(&record, psinfo); record.type = PSTORE_TYPE_CONSOLE; if (c > psinfo->bufsize) c = psinfo->bufsize; Loading Loading @@ -845,7 +852,7 @@ void pstore_get_backend_records(struct pstore_info *psi, pr_err("out of memory creating record\n"); break; } record->psi = psi; pstore_record_init(record, psi); record->size = psi->read(record); Loading
fs/pstore/pmsg.c +5 −5 Original line number Diff line number Diff line Loading @@ -22,16 +22,16 @@ static DEFINE_MUTEX(pmsg_lock); static ssize_t write_pmsg(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { struct pstore_record record = { .type = PSTORE_TYPE_PMSG, .size = count, .psi = psinfo, }; struct pstore_record record; int ret; if (!count) return 0; pstore_record_init(&record, psinfo); record.type = PSTORE_TYPE_PMSG; record.size = count; /* check outside lock, page in any data. write_user also checks */ if (!access_ok(VERIFY_READ, buf, count)) return -EFAULT; Loading