2022-09-17 03:13:35

by Li Zhong

[permalink] [raw]
Subject: [PATCH v1] kernel/events/core: check return value of task_function_call()

Check the return value of task_function_call(), which could be error
code when the execution fails.

Signed-off-by: Li Zhong <[email protected]>
---
kernel/events/core.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/events/core.c b/kernel/events/core.c
index 2621fd24ad26..ac0cf611b12a 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -13520,7 +13520,8 @@ static void perf_cgroup_attach(struct cgroup_taskset *tset)
struct cgroup_subsys_state *css;

cgroup_taskset_for_each(task, css, tset)
- task_function_call(task, __perf_cgroup_move, task);
+ if (!task_function_call(task, __perf_cgroup_move, task))
+ return;
}

struct cgroup_subsys perf_event_cgrp_subsys = {
--
2.25.1


2022-09-19 14:54:00

by Peter Zijlstra

[permalink] [raw]
Subject: Re: [PATCH v1] kernel/events/core: check return value of task_function_call()

On Fri, Sep 16, 2022 at 06:47:46PM -0700, Li Zhong wrote:
> Check the return value of task_function_call(), which could be error
> code when the execution fails.

How is terminating the cgroup task iteration a useful thing? Also coding
style fail for not adding { }

> Signed-off-by: Li Zhong <[email protected]>
> ---
> kernel/events/core.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/events/core.c b/kernel/events/core.c
> index 2621fd24ad26..ac0cf611b12a 100644
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -13520,7 +13520,8 @@ static void perf_cgroup_attach(struct cgroup_taskset *tset)
> struct cgroup_subsys_state *css;
>
> cgroup_taskset_for_each(task, css, tset)
> - task_function_call(task, __perf_cgroup_move, task);
> + if (!task_function_call(task, __perf_cgroup_move, task))
> + return;
> }
>
> struct cgroup_subsys perf_event_cgrp_subsys = {
> --
> 2.25.1
>

2022-09-19 19:06:05

by Li Zhong

[permalink] [raw]
Subject: Re: [PATCH v1] kernel/events/core: check return value of task_function_call()

On Mon, Sep 19, 2022 at 7:39 AM Peter Zijlstra <[email protected]> wrote:
>
> On Fri, Sep 16, 2022 at 06:47:46PM -0700, Li Zhong wrote:
> > Check the return value of task_function_call(), which could be error
> > code when the execution fails.
>
> How is terminating the cgroup task iteration a useful thing? Also coding
> style fail for not adding { }

Thanks for your reply! Skip and continue the execution is more appropriate
here. Change it in v2 patch.

>
> > Signed-off-by: Li Zhong <[email protected]>
> > ---
> > kernel/events/core.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/kernel/events/core.c b/kernel/events/core.c
> > index 2621fd24ad26..ac0cf611b12a 100644
> > --- a/kernel/events/core.c
> > +++ b/kernel/events/core.c
> > @@ -13520,7 +13520,8 @@ static void perf_cgroup_attach(struct cgroup_taskset *tset)
> > struct cgroup_subsys_state *css;
> >
> > cgroup_taskset_for_each(task, css, tset)
> > - task_function_call(task, __perf_cgroup_move, task);
> > + if (!task_function_call(task, __perf_cgroup_move, task))
> > + return;
> > }
> >
> > struct cgroup_subsys perf_event_cgrp_subsys = {
> > --
> > 2.25.1
> >