Re: [patch 4/5] posix-cpu-timers: Defer timer handling to task_work

From: Oleg Nesterov
Date: Thu Aug 01 2019 - 11:39:44 EST


On 08/01, Thomas Gleixner wrote:
>
> +static void __run_posix_cpu_timers(struct task_struct *tsk)
> +{
> + /* FIXME: Init it proper in fork or such */
> + init_task_work(&tsk->cpu_timer_work, posix_cpu_timers_work);
> + task_work_add(tsk, &tsk->cpu_timer_work, true);
> +}

What if update_process_times/run_posix_cpu_timers is called again before
this task does task_work_run() ?

somehow it should check that ->cpu_timer_work is not already queued...

Or suppose that this is called when task_work_run() executes this
cpu_timer_work. Looks like you need another flag checked by
__run_posix_cpu_timers() and cleare in posix_cpu_timers_work() ?

Oleg.