Lines Matching refs:record

370 void pstore_record_init(struct pstore_record *record,  in pstore_record_init()  argument
373 memset(record, 0, sizeof(*record)); in pstore_record_init()
375 record->psi = psinfo; in pstore_record_init()
378 record->time = ns_to_timespec64(ktime_get_real_fast_ns()); in pstore_record_init()
415 struct pstore_record record; in pstore_dump() local
417 pstore_record_init(&record, psinfo); in pstore_dump()
418 record.type = PSTORE_TYPE_DMESG; in pstore_dump()
419 record.count = oopscount; in pstore_dump()
420 record.reason = reason; in pstore_dump()
421 record.part = part; in pstore_dump()
422 record.buf = psinfo->buf; in pstore_dump()
448 record.compressed = true; in pstore_dump()
449 record.size = zipped_len; in pstore_dump()
451 record.size = copy_kmsg_to_buffer(header_size, in pstore_dump()
455 record.size = header_size + dump_size; in pstore_dump()
458 ret = psinfo->write(&record); in pstore_dump()
464 total += record.size; in pstore_dump()
491 struct pstore_record record; in pstore_console_write() local
496 pstore_record_init(&record, psinfo); in pstore_console_write()
497 record.type = PSTORE_TYPE_CONSOLE; in pstore_console_write()
499 record.buf = (char *)s; in pstore_console_write()
500 record.size = c; in pstore_console_write()
501 psinfo->write(&record); in pstore_console_write()
531 static int pstore_write_user_compat(struct pstore_record *record, in pstore_write_user_compat() argument
536 if (record->buf) in pstore_write_user_compat()
539 record->buf = memdup_user(buf, record->size); in pstore_write_user_compat()
540 if (IS_ERR(record->buf)) { in pstore_write_user_compat()
541 ret = PTR_ERR(record->buf); in pstore_write_user_compat()
545 ret = record->psi->write(record); in pstore_write_user_compat()
547 kfree(record->buf); in pstore_write_user_compat()
549 record->buf = NULL; in pstore_write_user_compat()
551 return unlikely(ret < 0) ? ret : record->size; in pstore_write_user_compat()
668 static void decompress_record(struct pstore_record *record) in decompress_record() argument
674 if (!IS_ENABLED(CONFIG_PSTORE_COMPRESSION) || !record->compressed) in decompress_record()
678 if (record->type != PSTORE_TYPE_DMESG) { in decompress_record()
679 pr_warn("ignored compressed record type %d\n", record->type); in decompress_record()
691 workspace = kmalloc(unzipped_len + record->ecc_notice_size, in decompress_record()
697 ret = crypto_comp_decompress(tfm, record->buf, record->size, in decompress_record()
706 memcpy(workspace + unzipped_len, record->buf + record->size, in decompress_record()
707 record->ecc_notice_size); in decompress_record()
710 unzipped = kmemdup(workspace, unzipped_len + record->ecc_notice_size, in decompress_record()
717 kfree(record->buf); in decompress_record()
718 record->buf = unzipped; in decompress_record()
719 record->size = unzipped_len; in decompress_record()
720 record->compressed = false; in decompress_record()
748 struct pstore_record *record; in pstore_get_backend_records() local
751 record = kzalloc(sizeof(*record), GFP_KERNEL); in pstore_get_backend_records()
752 if (!record) { in pstore_get_backend_records()
756 pstore_record_init(record, psi); in pstore_get_backend_records()
758 record->size = psi->read(record); in pstore_get_backend_records()
761 if (record->size <= 0) { in pstore_get_backend_records()
762 kfree(record); in pstore_get_backend_records()
766 decompress_record(record); in pstore_get_backend_records()
767 rc = pstore_mkfile(root, record); in pstore_get_backend_records()
770 kfree(record->buf); in pstore_get_backend_records()
771 kfree(record); in pstore_get_backend_records()