[PATCH] tracing/probes: Avoid using params uninitialized in parse_btf_arg()

Nathan Chancellor posted 1 patch 2 months, 3 weeks ago
kernel/trace/trace_probe.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] tracing/probes: Avoid using params uninitialized in parse_btf_arg()
Posted by Nathan Chancellor 2 months, 3 weeks ago
After a recent change in clang to strengthen uninitialized warnings [1],
it points out that in one of the error paths in parse_btf_arg(), params
is used uninitialized:

  kernel/trace/trace_probe.c:660:19: warning: variable 'params' is uninitialized when used here [-Wuninitialized]
    660 |                         return PTR_ERR(params);
        |                                        ^~~~~~

Match many other NO_BTF_ENTRY error cases and return -ENOENT, clearing
up the warning.

Cc: stable@vger.kernel.org
Closes: https://github.com/ClangBuiltLinux/linux/issues/2110
Fixes: d157d7694460 ("tracing/probes: Support BTF field access from $retval")
Link: https://github.com/llvm/llvm-project/commit/2464313eef01c5b1edf0eccf57a32cdee01472c7 [1]
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
---
 kernel/trace/trace_probe.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c
index 424751cdf31f..40830a3ecd96 100644
--- a/kernel/trace/trace_probe.c
+++ b/kernel/trace/trace_probe.c
@@ -657,7 +657,7 @@ static int parse_btf_arg(char *varname,
 		ret = query_btf_context(ctx);
 		if (ret < 0 || ctx->nr_params == 0) {
 			trace_probe_log_err(ctx->offset, NO_BTF_ENTRY);
-			return PTR_ERR(params);
+			return -ENOENT;
 		}
 	}
 	params = ctx->params;

---
base-commit: 6921d1e07cb5eddec830801087b419194fde0803
change-id: 20250715-trace_probe-fix-const-uninit-warning-7dc3accce903

Best regards,
--  
Nathan Chancellor <nathan@kernel.org>
Re: [PATCH] tracing/probes: Avoid using params uninitialized in parse_btf_arg()
Posted by Masami Hiramatsu (Google) 2 months, 3 weeks ago
On Tue, 15 Jul 2025 20:19:44 -0700
Nathan Chancellor <nathan@kernel.org> wrote:

> After a recent change in clang to strengthen uninitialized warnings [1],
> it points out that in one of the error paths in parse_btf_arg(), params
> is used uninitialized:
> 
>   kernel/trace/trace_probe.c:660:19: warning: variable 'params' is uninitialized when used here [-Wuninitialized]
>     660 |                         return PTR_ERR(params);
>         |                                        ^~~~~~
> 
> Match many other NO_BTF_ENTRY error cases and return -ENOENT, clearing
> up the warning.

Good catch! let me pick this up.

Thank you,


> 
> Cc: stable@vger.kernel.org
> Closes: https://github.com/ClangBuiltLinux/linux/issues/2110
> Fixes: d157d7694460 ("tracing/probes: Support BTF field access from $retval")
> Link: https://github.com/llvm/llvm-project/commit/2464313eef01c5b1edf0eccf57a32cdee01472c7 [1]
> Signed-off-by: Nathan Chancellor <nathan@kernel.org>
> ---
>  kernel/trace/trace_probe.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c
> index 424751cdf31f..40830a3ecd96 100644
> --- a/kernel/trace/trace_probe.c
> +++ b/kernel/trace/trace_probe.c
> @@ -657,7 +657,7 @@ static int parse_btf_arg(char *varname,
>  		ret = query_btf_context(ctx);
>  		if (ret < 0 || ctx->nr_params == 0) {
>  			trace_probe_log_err(ctx->offset, NO_BTF_ENTRY);
> -			return PTR_ERR(params);
> +			return -ENOENT;
>  		}
>  	}
>  	params = ctx->params;
> 
> ---
> base-commit: 6921d1e07cb5eddec830801087b419194fde0803
> change-id: 20250715-trace_probe-fix-const-uninit-warning-7dc3accce903
> 
> Best regards,
> --  
> Nathan Chancellor <nathan@kernel.org>
> 


-- 
Masami Hiramatsu (Google) <mhiramat@kernel.org>