Re: [PATCH v3] posix-cpu-timers: clear TICK_DEP_BIT_POSIX_TIMER on clone
From: Frederic Weisbecker
Date: Sat Oct 26 2024 - 11:29:35 EST
Le Fri, Oct 25, 2024 at 06:35:35PM -0700, Benjamin Segall a écrit :
> When cloning a new thread, its posix_cputimers are not inherited, and
> are cleared by posix_cputimers_init(). However, this does not clear the
> tick dependency it creates in tsk->tick_dep_mask, and the handler does
> not reach the code to clear the dependency if there were no timers to
> begin with.
>
> Thus if a thread has a cputimer running before clone/fork, all
> descendants will prevent nohz_full unless they create a cputimer of
> their own.
>
> Fix this by entirely clearing the tick_dep_mask in copy_process().
> (There is currently no inherited state that needs a tick dependency)
>
> Process-wide timers do not have this problem because fork does not copy
> signal_struct as a baseline, it creates one from scratch.
>
> Fixes: b78783000d5c ("posix-cpu-timers: Migrate to use new tick dependency mask model")
> Signed-off-by: Ben Segall <bsegall@xxxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx
Reviewed-by: Frederic Weisbecker <frederic@xxxxxxxxxx>
Thanks!