On Mon, Sep 05, 2016 at 04:16:57PM +0200, Stanislaw Gruszka wrote: > On Mon, Sep 05, 2016 at 11:13:01AM +0200, Stanislaw Gruszka wrote: > > Currently we protect 64bit sum_exec_runtime read on 32bit cpus using > > task_rq_lock() which internally takes t->pi_lock and rq->lock. Taking > > rq->lock is not needed in this case. > > I looked more at kernel/sched/ code and now I'm not sure about this. > I assumed that update_curr() is called with rq->curr->pi_lock, but > looks like it can be called with some other task->pi_lock not > necessary the rq->curr, hence looks that we need rq->lock to assure > protection
Correct, rq->lock needs be held for this. update_curr() is called from places like the tick and schedule(), neither of which hold pi_lock.