Lines Matching refs:record
373 void pstore_record_init(struct pstore_record *record, in pstore_record_init() argument
376 memset(record, 0, sizeof(*record)); in pstore_record_init()
378 record->psi = psinfo; in pstore_record_init()
381 record->time = ns_to_timespec64(ktime_get_real_fast_ns()); in pstore_record_init()
418 struct pstore_record record; in pstore_dump() local
420 pstore_record_init(&record, psinfo); in pstore_dump()
421 record.type = PSTORE_TYPE_DMESG; in pstore_dump()
422 record.count = oopscount; in pstore_dump()
423 record.reason = reason; in pstore_dump()
424 record.part = part; in pstore_dump()
425 record.buf = psinfo->buf; in pstore_dump()
451 record.compressed = true; in pstore_dump()
452 record.size = zipped_len; in pstore_dump()
454 record.size = copy_kmsg_to_buffer(header_size, in pstore_dump()
458 record.size = header_size + dump_size; in pstore_dump()
461 ret = psinfo->write(&record); in pstore_dump()
465 total += record.size; in pstore_dump()
492 struct pstore_record record; in pstore_console_write() local
497 pstore_record_init(&record, psinfo); in pstore_console_write()
498 record.type = PSTORE_TYPE_CONSOLE; in pstore_console_write()
500 record.buf = (char *)s; in pstore_console_write()
501 record.size = c; in pstore_console_write()
502 psinfo->write(&record); in pstore_console_write()
526 static int pstore_write_user_compat(struct pstore_record *record, in pstore_write_user_compat() argument
531 if (record->buf) in pstore_write_user_compat()
534 record->buf = memdup_user(buf, record->size); in pstore_write_user_compat()
535 if (IS_ERR(record->buf)) { in pstore_write_user_compat()
536 ret = PTR_ERR(record->buf); in pstore_write_user_compat()
540 ret = record->psi->write(record); in pstore_write_user_compat()
542 kfree(record->buf); in pstore_write_user_compat()
544 record->buf = NULL; in pstore_write_user_compat()
546 return unlikely(ret < 0) ? ret : record->size; in pstore_write_user_compat()
658 static void decompress_record(struct pstore_record *record) in decompress_record() argument
664 if (!record->compressed) in decompress_record()
668 if (record->type != PSTORE_TYPE_DMESG) { in decompress_record()
669 pr_warn("ignored compressed record type %d\n", record->type); in decompress_record()
681 workspace = kmalloc(unzipped_len + record->ecc_notice_size, in decompress_record()
687 ret = crypto_comp_decompress(tfm, record->buf, record->size, in decompress_record()
696 memcpy(workspace + unzipped_len, record->buf + record->size, in decompress_record()
697 record->ecc_notice_size); in decompress_record()
700 unzipped = kmemdup(workspace, unzipped_len + record->ecc_notice_size, in decompress_record()
707 kfree(record->buf); in decompress_record()
708 record->buf = unzipped; in decompress_record()
709 record->size = unzipped_len; in decompress_record()
710 record->compressed = false; in decompress_record()
738 struct pstore_record *record; in pstore_get_backend_records() local
741 record = kzalloc(sizeof(*record), GFP_KERNEL); in pstore_get_backend_records()
742 if (!record) { in pstore_get_backend_records()
746 pstore_record_init(record, psi); in pstore_get_backend_records()
748 record->size = psi->read(record); in pstore_get_backend_records()
751 if (record->size <= 0) { in pstore_get_backend_records()
752 kfree(record); in pstore_get_backend_records()
756 decompress_record(record); in pstore_get_backend_records()
757 rc = pstore_mkfile(root, record); in pstore_get_backend_records()
760 kfree(record->buf); in pstore_get_backend_records()
761 kfree(record); in pstore_get_backend_records()