[PATCH] fgraph: Fix missing unlock in register_ftrace_graph()

Li Huafei posted 1 patch 1 year, 3 months ago
There is a newer version of this series
kernel/trace/fgraph.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] fgraph: Fix missing unlock in register_ftrace_graph()
Posted by Li Huafei 1 year, 3 months ago
Instead of returning an error, goto the mutex unlock at the end of the
function.

Fixes smatch warning:

kernel/trace/fgraph.c:1317 register_ftrace_graph() warn: inconsistent returns '&ftrace_lock'.

Fixes: 2c02f7375e65 ("fgraph: Use CPU hotplug mechanism to initialize idle shadow stacks")
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/r/202410220121.wxg0olfd-lkp@intel.com/
Signed-off-by: Li Huafei <lihuafei1@huawei.com>
---
 kernel/trace/fgraph.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/trace/fgraph.c b/kernel/trace/fgraph.c
index 41e7a15dcb50..98fa7b2a4903 100644
--- a/kernel/trace/fgraph.c
+++ b/kernel/trace/fgraph.c
@@ -1259,7 +1259,7 @@ int register_ftrace_graph(struct fgraph_ops *gops)
 					fgraph_cpu_init, NULL);
 		if (ret < 0) {
 			pr_warn("fgraph: Error to init cpu hotplug support\n");
-			return ret;
+			goto out;
 		}
 		fgraph_initialized = true;
 		ret = 0;
-- 
2.25.1
Re: [PATCH] fgraph: Fix missing unlock in register_ftrace_graph()
Posted by Steven Rostedt 1 year, 3 months ago
On Thu, 24 Oct 2024 01:04:48 +0800
Li Huafei <lihuafei1@huawei.com> wrote:

> Instead of returning an error, goto the mutex unlock at the end of the
> function.
> 
> Fixes smatch warning:
> 
> kernel/trace/fgraph.c:1317 register_ftrace_graph() warn: inconsistent returns '&ftrace_lock'.
> 
> Fixes: 2c02f7375e65 ("fgraph: Use CPU hotplug mechanism to initialize idle shadow stacks")
> Reported-by: kernel test robot <lkp@intel.com>
> Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
> Closes: https://lore.kernel.org/r/202410220121.wxg0olfd-lkp@intel.com/
> Signed-off-by: Li Huafei <lihuafei1@huawei.com>
> ---
>  kernel/trace/fgraph.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/kernel/trace/fgraph.c b/kernel/trace/fgraph.c
> index 41e7a15dcb50..98fa7b2a4903 100644
> --- a/kernel/trace/fgraph.c
> +++ b/kernel/trace/fgraph.c
> @@ -1259,7 +1259,7 @@ int register_ftrace_graph(struct fgraph_ops *gops)
>  					fgraph_cpu_init, NULL);
>  		if (ret < 0) {
>  			pr_warn("fgraph: Error to init cpu hotplug support\n");
> -			return ret;
> +			goto out;
>  		}
>  		fgraph_initialized = true;
>  		ret = 0;

Actually, I'm thinking we just should use guard(mutex)(&ftrace_lock);

-- Steve
Re: [PATCH] fgraph: Fix missing unlock in register_ftrace_graph()
Posted by Li Huafei 1 year, 3 months ago
Hi Steve,

On 2024/10/23 17:29, Steven Rostedt wrote:
> On Thu, 24 Oct 2024 01:04:48 +0800
> Li Huafei <lihuafei1@huawei.com> wrote:
> 
>> Instead of returning an error, goto the mutex unlock at the end of the
>> function.
>>
>> Fixes smatch warning:
>>
>> kernel/trace/fgraph.c:1317 register_ftrace_graph() warn: inconsistent returns '&ftrace_lock'.
>>
>> Fixes: 2c02f7375e65 ("fgraph: Use CPU hotplug mechanism to initialize idle shadow stacks")
>> Reported-by: kernel test robot <lkp@intel.com>
>> Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
>> Closes: https://lore.kernel.org/r/202410220121.wxg0olfd-lkp@intel.com/
>> Signed-off-by: Li Huafei <lihuafei1@huawei.com>
>> ---
>>  kernel/trace/fgraph.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/kernel/trace/fgraph.c b/kernel/trace/fgraph.c
>> index 41e7a15dcb50..98fa7b2a4903 100644
>> --- a/kernel/trace/fgraph.c
>> +++ b/kernel/trace/fgraph.c
>> @@ -1259,7 +1259,7 @@ int register_ftrace_graph(struct fgraph_ops *gops)
>>  					fgraph_cpu_init, NULL);
>>  		if (ret < 0) {
>>  			pr_warn("fgraph: Error to init cpu hotplug support\n");
>> -			return ret;
>> +			goto out;
>>  		}
>>  		fgraph_initialized = true;
>>  		ret = 0;
> 
> Actually, I'm thinking we just should use guard(mutex)(&ftrace_lock);
> 

Agreed, this will make the code simpler and avoid mistakes. If we need
to replace all mutex(&ftrace_lock), would it be better to submit another
cleanup patch? We can fix the issue here first.

Thanks,
Huafei

> -- Steve
> 
> .
>
Re: [PATCH] fgraph: Fix missing unlock in register_ftrace_graph()
Posted by Steven Rostedt 1 year, 3 months ago
On Thu, 24 Oct 2024 10:45:46 +0800
Li Huafei <lihuafei1@huawei.com> wrote:

> Agreed, this will make the code simpler and avoid mistakes. If we need
> to replace all mutex(&ftrace_lock), would it be better to submit another
> cleanup patch? We can fix the issue here first.

This case is a bug fix, just add it here.

We can do a clean up separately for the other locations.

-- Steve
Re: [PATCH] fgraph: Fix missing unlock in register_ftrace_graph()
Posted by Li Huafei 1 year, 3 months ago

On 2024/10/24 12:46, Steven Rostedt wrote:
> On Thu, 24 Oct 2024 10:45:46 +0800
> Li Huafei <lihuafei1@huawei.com> wrote:
> 
>> Agreed, this will make the code simpler and avoid mistakes. If we need
>> to replace all mutex(&ftrace_lock), would it be better to submit another
>> cleanup patch? We can fix the issue here first.
> 
> This case is a bug fix, just add it here.
> 
> We can do a clean up separately for the other locations.
> 

Okay, I've already sent v2:

https://lore.kernel.org/lkml/20241024155917.1019580-1-lihuafei1@huawei.com/T/#u

Thanks,
Huafei

> -- Steve
> 
> .
>