On Mon, 24 Oct 2016 16:06:34 +0200 Luca Abeni <luca.ab...@unitn.it> 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