Messages in this thread | | | Subject | Re: [PATCH 2.6.27-rc5 incremental re-resubmit] Fix itimer/many thread hang. | From | Frank Mayhar <> | Date | Tue, 30 Sep 2008 09:36:30 -0700 |
| |
On Tue, 2008-09-30 at 08:33 +0200, Ingo Molnar wrote: > * 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 ...
You know, I just knew I had a brain around here _somewhere_.
Weirdly, this didn't fall over on any of my testing. The gods know what it was actually doing, though.
I'm picking up tip/master right now and will test your fix for this shortly. -- Frank Mayhar <fmayhar@google.com> Google, Inc.
| |