![]() | |||||||||||||
Messages in this thread |
* Frank Mayhar <fmayhar@google.com> wrote:
> /*
> * Return any ns on the sched_clock that have not yet been banked in
> * @p in case that task is currently running.
> - *
> - * Called with task_rq_lock() held on @rq.
> */
> -static unsigned long long task_delta_exec(struct task_struct *p, struct rq *rq)
> +unsigned long long task_delta_exec(struct task_struct *p)
> {
> + struct rq *rq;
> + unsigned long flags;
> + u64 ns = 0;
> +
> if (task_current(rq, p)) {
> u64 delta_exec;
hmmm ... where do we get 'rq' from?
in v3 you did this:
- rq = task_rq_lock(p, &flags);
which removed the deadlock but left us with a random uninitialized rq
variable ...
the right solution for the bug would have been to unlock it.
Miraculously we didnt actually crash anywhere visibly, found it by
reviewing the code. I thought this code gets excercised quite
frequently. The commit below fixes it.
Could you please functionality-test latest tip/master:
http://people.redhat.com/mingo/tip.git/README
with your testcase that excercises these codepaths heavily?
Thanks,
Ingo
| ||||||||||||
| Last update: 2008-09-30 08:37 [from the cache] ©2003-2008 | |||||||||||||