On 22/08/2019 04:17, Rik van Riel wrote:
> Make it clear that update_curr only works on tasks any more.
> 
> There is no need for task_tick_fair to call it on every sched entity up
> the hierarchy, so move the call out of entity_tick.
> 
> Signed-off-by: Rik van Riel <r...@surriel.com>`
> Signed-off-by: Rik van Riel <r...@surriel.com>
> ---
>  kernel/sched/fair.c | 24 +++++++++++-------------
>  1 file changed, 11 insertions(+), 13 deletions(-)
> 
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index fa8e88731821..5cfa3dbeba49 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -872,10 +872,11 @@ static void update_tg_load_avg(struct cfs_rq *cfs_rq, 
> int force)
>  static void update_curr(struct cfs_rq *cfs_rq)
>  {
>       struct sched_entity *curr = cfs_rq->curr;
> +     struct task_struct *curtask;
>       u64 now = rq_clock_task(rq_of(cfs_rq));
>       u64 delta_exec;
>  
> -     if (unlikely(!curr))
> +     if (unlikely(!curr) || !entity_is_task(curr))
>               return;

Shouldn't this be

-       if (unlikely(!curr) || !entity_is_task(curr))
+       if (unlikely(!curr))
                return;

+       BUG_ON(!entity_is_task(curr));

IMHO, cfs_rq->curr can only be a task with your changes.

Reply via email to