On Mon, 24 Oct 2016 16:06:34 +0200
Luca Abeni <[email protected]> wrote:
[...]
> @@ -514,7 +556,20 @@ static void update_dl_entity(struct sched_dl_entity
> *dl_se,
> struct dl_rq *dl_rq = dl_rq_of_se(dl_se);
> struct rq *rq = rq_of_dl_rq(dl_rq);
>
> - add_running_bw(dl_se, dl_rq);
> + if (hrtimer_is_queued(&dl_se->inactive_timer)) {
> + hrtimer_try_to_cancel(&dl_se->inactive_timer);
Replying to myself here: after re-readling this code again, I now think that
if hrtimer_try_to_cancel() does not fail I need a put_task_struct() to
compensate for the one that should happen in the inactive timer handler
and I just cancelled...
I do not know how I previously missed this (or maybe I just managed to
confuse myself now :)
I will check this in next week.
Luca