|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [PATCH] arinc653: move next_switch_time access under lock
On 17/03/25 05:31, Jan Beulich wrote:
> Even before its recent movement to the scheduler's private data structure it
> looks
> to have been wrong to update the field under lock, but then read it with the
> lock
> no longer held.
>
> Coverity-ID: 1644500
> Fixes: 9f0c658baedc ("arinc: add cpu-pool support to scheduler")
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
> ---
> The Fixes: tag references where the locking was added; I can't exclude there
> was
> an issue here already before that.
>
> --- a/xen/common/sched/arinc653.c
> +++ b/xen/common/sched/arinc653.c
> @@ -579,6 +579,9 @@ a653sched_do_schedule(
> */
> BUG_ON(now >= sched_priv->next_major_frame);
>
> + prev->next_time = sched_priv->next_switch_time - now;
> +
> + /* Return the amount of time the next domain has to run. */
This could be pushed up to immediately after next_switch_time is set, but here
is
good enough. However, did you mean to put the comment after the assignment
separated by whitespace?
Nate
> spin_unlock_irqrestore(&sched_priv->lock, flags);
>
> /* Tasklet work (which runs in idle UNIT context) overrides all else. */
> @@ -
> 590,11 +593,7 @@ a653sched_do_schedule(
> && (sched_unit_master(new_task) != cpu) )
> new_task = IDLETASK(cpu);
>
> - /*
> - * Return the amount of time the next domain has to run and the address
> - * of the selected task's UNIT structure.
> - */
> - prev->next_time = sched_priv->next_switch_time - now;
> + /* Also return the address of the selected task's UNIT structure.
> + */
> prev->next_task = new_task;
> new_task->migrated = false;
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |