Re: [PATCH v2 1/2] sched/cputime: Use only pi_lock to protect sum_exec_runtime read

From: Peter Zijlstra
Date: Mon Sep 05 2016 - 15:17:45 EST


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.