* [PATCH v2] kernel/events/core: check return value of task_function_call()
@ 2022-09-19 19:16 Li Zhong
2022-09-21 7:46 ` Ingo Molnar
0 siblings, 1 reply; 3+ messages in thread
From: Li Zhong @ 2022-09-19 19:16 UTC (permalink / raw)
To: linux-perf-users, bpf
Cc: namhyung, jolsa, alexander.shishkin, mark.rutland, acme, mingo,
peterz, lily
From: lily <floridsleeves@gmail.com>
Check the return value of task_function_call(), which could be error
code when the execution fails. We log this on info level.
Signed-off-by: Li Zhong <floridsleeves@gmail.com>
---
kernel/events/core.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 2621fd24ad26..3848631b009c 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -13520,7 +13520,10 @@ 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)) {
+ printk(KERN_INFO "perf: this process isn't running!\n");
+ continue;
+ }
}
struct cgroup_subsys perf_event_cgrp_subsys = {
--
2.25.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH v2] kernel/events/core: check return value of task_function_call()
2022-09-19 19:16 [PATCH v2] kernel/events/core: check return value of task_function_call() Li Zhong
@ 2022-09-21 7:46 ` Ingo Molnar
2022-09-21 8:10 ` Peter Zijlstra
0 siblings, 1 reply; 3+ messages in thread
From: Ingo Molnar @ 2022-09-21 7:46 UTC (permalink / raw)
To: Li Zhong
Cc: linux-perf-users, bpf, namhyung, jolsa, alexander.shishkin,
mark.rutland, acme, mingo, peterz
* Li Zhong <floridsleeves@gmail.com> wrote:
> From: lily <floridsleeves@gmail.com>
>
> Check the return value of task_function_call(), which could be error
> code when the execution fails. We log this on info level.
>
> Signed-off-by: Li Zhong <floridsleeves@gmail.com>
> ---
> kernel/events/core.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/events/core.c b/kernel/events/core.c
> index 2621fd24ad26..3848631b009c 100644
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -13520,7 +13520,10 @@ 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)) {
> + printk(KERN_INFO "perf: this process isn't running!\n");
> + continue;
If this is a 'should never happen' condition, then this should really be
WARN_ON_ONCE().
(If it can happen, then polluting the syslog is wrong.)
Thanks,
Ingo
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH v2] kernel/events/core: check return value of task_function_call()
2022-09-21 7:46 ` Ingo Molnar
@ 2022-09-21 8:10 ` Peter Zijlstra
0 siblings, 0 replies; 3+ messages in thread
From: Peter Zijlstra @ 2022-09-21 8:10 UTC (permalink / raw)
To: Ingo Molnar
Cc: Li Zhong, linux-perf-users, bpf, namhyung, jolsa,
alexander.shishkin, mark.rutland, acme, mingo
On Wed, Sep 21, 2022 at 09:46:40AM +0200, Ingo Molnar wrote:
>
> * Li Zhong <floridsleeves@gmail.com> wrote:
>
> > From: lily <floridsleeves@gmail.com>
> >
> > Check the return value of task_function_call(), which could be error
> > code when the execution fails. We log this on info level.
> >
> > Signed-off-by: Li Zhong <floridsleeves@gmail.com>
> > ---
> > kernel/events/core.c | 5 ++++-
> > 1 file changed, 4 insertions(+), 1 deletion(-)
> >
> > diff --git a/kernel/events/core.c b/kernel/events/core.c
> > index 2621fd24ad26..3848631b009c 100644
> > --- a/kernel/events/core.c
> > +++ b/kernel/events/core.c
> > @@ -13520,7 +13520,10 @@ 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)) {
> > + printk(KERN_INFO "perf: this process isn't running!\n");
> > + continue;
>
> If this is a 'should never happen' condition, then this should really be
> WARN_ON_ONCE().
>
> (If it can happen, then polluting the syslog is wrong.)
It can happen and is just fine. If this task_function_call() fails, it
means the context switch that made it fail ensured the new values have
been picked up.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-09-21 8:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-19 19:16 [PATCH v2] kernel/events/core: check return value of task_function_call() Li Zhong
2022-09-21 7:46 ` Ingo Molnar
2022-09-21 8:10 ` Peter Zijlstra
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox