[PATCH v1] kernel/trace/trace: check the return value of tracing_update_buffers()

Li Zhong posted 1 patch 3 years, 6 months ago
kernel/trace/trace.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH v1] kernel/trace/trace: check the return value of tracing_update_buffers()
Posted by Li Zhong 3 years, 6 months ago
Check the return value of tracing_update_buffers() in case it fails.

Signed-off-by: Li Zhong <floridsleeves@gmail.com>
---
 kernel/trace/trace.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index d3005279165d..0e367e326147 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -3305,7 +3305,8 @@ void trace_printk_init_buffers(void)
 	pr_warn("**********************************************************\n");
 
 	/* Expand the buffers to set size */
-	tracing_update_buffers();
+	if (tracing_update_buffers() < 0)
+		return;
 
 	buffers_allocated = 1;
 
-- 
2.25.1
Re: [PATCH v1] kernel/trace/trace: check the return value of tracing_update_buffers()
Posted by Steven Rostedt 3 years, 6 months ago
On Fri, 16 Sep 2022 19:03:53 -0700
Li Zhong <floridsleeves@gmail.com> wrote:

> Check the return value of tracing_update_buffers() in case it fails.

FYI, the subject should be:

  tracing: Check the return value of tracing_update_buffers()

> 
> Signed-off-by: Li Zhong <floridsleeves@gmail.com>
> ---
>  kernel/trace/trace.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
> index d3005279165d..0e367e326147 100644
> --- a/kernel/trace/trace.c
> +++ b/kernel/trace/trace.c
> @@ -3305,7 +3305,8 @@ void trace_printk_init_buffers(void)
>  	pr_warn("**********************************************************\n");
>  
>  	/* Expand the buffers to set size */
> -	tracing_update_buffers();
> +	if (tracing_update_buffers() < 0)
> +		return;

Even if the buffers are not expanded, tracing can still work. This should
not return here. But instead we should have something like:

	/* Allocation really should not fail here at boot up or module load */
	if (tracing_update_buffers() < 0)
		pr_err("Failed to expand tracing buffers for trace_printk() calls\n");
	else
		buffers_allocate = 1;

As we still want the cmdline action done late in the code.

-- Steve


>  
>  	buffers_allocated = 1;
>