Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9ad2cbe0 authored by Aruna Balakrishnaiah's avatar Aruna Balakrishnaiah Committed by Tony Luck
Browse files

pstore: Add file extension to pstore file if compressed



In case decompression fails, add a ".enc.z" to indicate the file has
compressed data. This will help user space utilities to figure
out the file contents.

Signed-off-by: default avatarAruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
Reviewed-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent adb42f5e
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -275,8 +275,8 @@ int pstore_is_mounted(void)
 * Set the mtime & ctime to the date that this record was originally stored.
 */
int pstore_mkfile(enum pstore_type_id type, char *psname, u64 id, int count,
		  char *data, size_t size, struct timespec time,
		  struct pstore_info *psi)
		  char *data, bool compressed, size_t size,
		  struct timespec time, struct pstore_info *psi)
{
	struct dentry		*root = pstore_sb->s_root;
	struct dentry		*dentry;
@@ -315,7 +315,8 @@ int pstore_mkfile(enum pstore_type_id type, char *psname, u64 id, int count,

	switch (type) {
	case PSTORE_TYPE_DMESG:
		sprintf(name, "dmesg-%s-%lld", psname, id);
		sprintf(name, "dmesg-%s-%lld%s", psname, id,
						compressed ? ".enc.z" : "");
		break;
	case PSTORE_TYPE_CONSOLE:
		sprintf(name, "console-%s", psname);
+3 −2
Original line number Diff line number Diff line
@@ -50,8 +50,9 @@ extern struct pstore_info *psinfo;
extern void	pstore_set_kmsg_bytes(int);
extern void	pstore_get_records(int);
extern int	pstore_mkfile(enum pstore_type_id, char *psname, u64 id,
			      int count, char *data, size_t size,
			      struct timespec time, struct pstore_info *psi);
			      int count, char *data, bool compressed,
			      size_t size, struct timespec time,
			      struct pstore_info *psi);
extern int	pstore_is_mounted(void);

#endif
+3 −1
Original line number Diff line number Diff line
@@ -479,13 +479,15 @@ void pstore_get_records(int quiet)
			if (unzipped_len > 0) {
				buf = big_oops_buf;
				size = unzipped_len;
				compressed = false;
			} else {
				pr_err("pstore: decompression failed;"
					"returned %d\n", unzipped_len);
				compressed = true;
			}
		}
		rc = pstore_mkfile(type, psi->name, id, count, buf,
				  (size_t)size, time, psi);
				  compressed, (size_t)size, time, psi);
		if (unzipped_len < 0) {
			/* Free buffer other than big oops */
			kfree(buf);