Messages in this thread | | | From | (Eric W. Biederman) | Date | Fri, 29 May 2020 13:01:22 -0500 | Subject | Re: [RFC] decrease tsk->signal->live before profile_task_exit |
| |
liuchao <liuchao173@huawei.com> writes:
> I want to dermine which thread is the last one to enter > do_exit in profile_task_exit. But when a lot of threads > exit, tsk->signal->live is not correct since it decrease > after profile_task_exit.
I don't think that would be wise.
Any additional code before the sanity checks at the start of do_exit seems like a bad idea.
We could probably move the decrement of tsk->signal->live a little earlier, but not that much earlier in the function.
Does profile_task_exit even make sense that early in the code? If the code is doing much of anything that is a completely inappopriate placement of profile_task_exit.
Eric
> Signed-off-by: liuchao <liuchao173@huawei.com> > --- > kernel/exit.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/exit.c b/kernel/exit.c > index ce2a75bc0ade..1693764bc356 100644 > --- a/kernel/exit.c > +++ b/kernel/exit.c > @@ -708,6 +708,7 @@ void __noreturn do_exit(long code) > struct task_struct *tsk = current; > int group_dead; > > + group_dead = atomic_dec_and_test(&tsk->signal->live); > profile_task_exit(tsk); > kcov_task_exit(tsk); > > @@ -755,7 +756,6 @@ void __noreturn do_exit(long code) > if (tsk->mm) > sync_mm_rss(tsk->mm); > acct_update_integrals(tsk); > - group_dead = atomic_dec_and_test(&tsk->signal->live); > if (group_dead) { > /* > * If the last thread of global init has exited, panic
| |