Re: [PATCH 5/6] sched/isolation: Introduce isolated task work

From: K Prateek Nayak
Date: Sat Apr 12 2025 - 01:12:31 EST


On 4/11/2025 3:55 PM, Oleg Nesterov wrote:

+ local_irq_save(flags);
+ if (task_work_queued(&current->nohz_full_work)) {
+ ret = 0;
+ goto out;
+ }
+
+ ret = task_work_add(current, &current->nohz_full_work, TWA_RESUME);
+out:
+ local_irq_restore(flags);
+ return ret;

Hmm, why not

local_irq_save(flags);
if (task_work_queued(...))
ret = 0;
else
ret = task_work_add(...);

?

Or use guard() sand save on flags and ret:

guard(irqsave)();

if (task_work_queued(...))
return 0;

return task_work_add(...);

--
Thanks and Regards,
Prateek


Oleg.