The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* Re: [PATCH v2] pstore/zone: Emit registration message as a single pr_info()
       [not found] <20260426090929.1528232-1-kkartik@nvidia.com>
@ 2026-05-12 13:50 ` Jon Hunter
  0 siblings, 0 replies; only message in thread
From: Jon Hunter @ 2026-05-12 13:50 UTC (permalink / raw)
  To: Kartik Rajput, Kees Cook, Tony Luck, Guilherme G . Piccoli,
	Thierry Reding, linux-kernel, linux-tegra


On 26/04/2026 10:09, Kartik Rajput wrote:
> register_pstore_zone() prints its "registered ... as backend for ..."
> summary as a pr_info() followed by several pr_cont() calls.
> 
> pr_cont() is not atomic and has no log level of its own. It appends
> to whichever line was most recently opened by a printk(). If a
> pr_err() or pr_warn() from another CPU or an interrupt handler
> preempts the pr_info() / pr_cont() sequence, it closes the
> continuation between the fragments. This can cause parts of the
> pstore registration message to appear at the wrong log level and be
> interleaved with other messages.
> 
> Furthermore, this causes the detection of new warning and error
> messages in the kernel log to be unreliable.
> 
> Format the registration line into a seq_buf and emit it with a
> single pr_info() call, making the line atomic with respect to
> concurrent printk() callers.  No functional change to registration.
> 
> Signed-off-by: Kartik Rajput <kkartik@nvidia.com>
> ---
> Changes in v2:
> - Use a seq_buf to build the registration line instead of scnprintf()
>    calls.
> - Link to v1: https://lore.kernel.org/all/20260424095820.1433700-1-kkartik@nvidia.com/
> ---
>   fs/pstore/zone.c | 23 +++++++++++++----------
>   1 file changed, 13 insertions(+), 10 deletions(-)
> 
> diff --git a/fs/pstore/zone.c b/fs/pstore/zone.c
> index a3b003f9a3a0..004a5d5f376b 100644
> --- a/fs/pstore/zone.c
> +++ b/fs/pstore/zone.c
> @@ -12,6 +12,7 @@
>   #include <linux/slab.h>
>   #include <linux/mount.h>
>   #include <linux/printk.h>
> +#include <linux/seq_buf.h>
>   #include <linux/fs.h>
>   #include <linux/pstore_zone.h>
>   #include <linux/kdev_t.h>
> @@ -1301,6 +1302,10 @@ int register_pstore_zone(struct pstore_zone_info *info)
>   {
>   	int err = -EINVAL;
>   	struct psz_context *cxt = &pstore_zone_cxt;
> +	char buf[256];
> +	struct seq_buf s;
> +
> +	seq_buf_init(&s, buf, sizeof(buf));
>   
>   	if (info->total_size < 4096) {
>   		pr_warn("total_size must be >= 4096\n");
> @@ -1383,30 +1388,28 @@ int register_pstore_zone(struct pstore_zone_info *info)
>   	}
>   	cxt->pstore.data = cxt;
>   
> -	pr_info("registered %s as backend for", info->name);
>   	cxt->pstore.max_reason = info->max_reason;
>   	cxt->pstore.name = info->name;
>   	if (info->kmsg_size) {
>   		cxt->pstore.flags |= PSTORE_FLAGS_DMESG;
> -		pr_cont(" kmsg(%s",
> -			kmsg_dump_reason_str(cxt->pstore.max_reason));
> -		if (cxt->pstore_zone_info->panic_write)
> -			pr_cont(",panic_write");
> -		pr_cont(")");
> +		seq_buf_printf(&s, " kmsg(%s%s)",
> +			       kmsg_dump_reason_str(cxt->pstore.max_reason),
> +			       cxt->pstore_zone_info->panic_write ? ",panic_write" : "");
>   	}
>   	if (info->pmsg_size) {
>   		cxt->pstore.flags |= PSTORE_FLAGS_PMSG;
> -		pr_cont(" pmsg");
> +		seq_buf_puts(&s, " pmsg");
>   	}
>   	if (info->console_size) {
>   		cxt->pstore.flags |= PSTORE_FLAGS_CONSOLE;
> -		pr_cont(" console");
> +		seq_buf_puts(&s, " console");
>   	}
>   	if (info->ftrace_size) {
>   		cxt->pstore.flags |= PSTORE_FLAGS_FTRACE;
> -		pr_cont(" ftrace");
> +		seq_buf_puts(&s, " ftrace");
>   	}
> -	pr_cont("\n");
> +
> +	pr_info("registered %s as backend for%s\n", info->name, seq_buf_str(&s));
>   
>   	err = pstore_register(&cxt->pstore);
>   	if (err) {


Acked-by: Jon Hunter <jonathanh@nvidia.com>

Jon

-- 
nvpublic


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-05-12 13:50 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20260426090929.1528232-1-kkartik@nvidia.com>
2026-05-12 13:50 ` [PATCH v2] pstore/zone: Emit registration message as a single pr_info() Jon Hunter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox