Commit 3524e688 authored by Pavel Tatashin's avatar Pavel Tatashin Committed by Kees Cook
Browse files

pstore/platform: Pass max_reason to kmesg dump



Add a new member to struct pstore_info for passing information about
kmesg dump maximum reason. This allows a finer control of what kmesg
dumps are sent to pstore storage backends.

Those backends that do not explicitly set this field (keeping it equal to
0), get the default behavior: store only Oopses and Panics, or everything
if the printk.always_kmsg_dump boot param is set.

Signed-off-by: default avatarPavel Tatashin <pasha.tatashin@soleen.com>
Link: https://lore.kernel.org/lkml/20200515184434.8470-5-keescook@chromium.org/


Co-developed-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
parent fb13cb8a
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -595,8 +595,10 @@ int pstore_register(struct pstore_info *psi)

	pstore_get_records(0);

	if (psi->flags & PSTORE_FLAGS_DMESG)
	if (psi->flags & PSTORE_FLAGS_DMESG) {
		pstore_dumper.max_reason = psinfo->max_reason;
		pstore_register_kmsg();
	}
	if (psi->flags & PSTORE_FLAGS_CONSOLE)
		pstore_register_console();
	if (psi->flags & PSTORE_FLAGS_FTRACE)
+7 −0
Original line number Diff line number Diff line
@@ -96,6 +96,12 @@ struct pstore_record {
 *
 * @read_mutex:	serializes @open, @read, @close, and @erase callbacks
 * @flags:	bitfield of frontends the backend can accept writes for
 * @max_reason:	Used when PSTORE_FLAGS_DMESG is set. Contains the
 *		kmsg_dump_reason enum value. KMSG_DUMP_UNDEF means
 *		"use existing kmsg_dump() filtering, based on the
 *		printk.always_kmsg_dump boot param" (which is either
 *		KMSG_DUMP_OOPS when false, or KMSG_DUMP_MAX when
 *		true); see printk.always_kmsg_dump for more details.
 * @data:	backend-private pointer passed back during callbacks
 *
 * Callbacks:
@@ -179,6 +185,7 @@ struct pstore_info {
	struct mutex	read_mutex;

	int		flags;
	int		max_reason;
	void		*data;

	int		(*open)(struct pstore_info *psi);