lkml.org 
[lkml]   [2004]   [Feb]   [17]   [last100]   RSS Feed
Views: [more markup]   [less markup]   [headers]   [forward]  
 
Messages in this thread
/
DateMon, 16 Feb 2004 21:27:58 -0800
FromAndrew Morton <>
SubjectRe: [2.6.2] Badness in futex_wait revisited
Rusty Russell <rusty@rustcorp.com.au> wrote:
>
> -	if (likely(!list_empty(&q.list)))
>  +	if (likely(!list_empty(&q.list))) {
>  +		current->flags |= PF_FUTEX_DEBUG;
>   		time = schedule_timeout(time);
>  +		current->flags &= ~PF_FUTEX_DEBUG;
>  +	}
>   	__set_current_state(TASK_RUNNING);
> 
>   	/*
>  diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .6375-linux-2.6.3-rc3-bk1/kernel/sched.c .6375-linux-2.6.3-rc3-bk1.updated/kernel/sched.c
>  --- .6375-linux-2.6.3-rc3-bk1/kernel/sched.c	2004-02-15 18:17:22.000000000 +1100
>  +++ .6375-linux-2.6.3-rc3-bk1.updated/kernel/sched.c	2004-02-17 12:02:24.000000000 +1100
>  @@ -658,6 +658,14 @@ static int try_to_wake_up(task_t * p, un
>   	long old_state;
>   	runqueue_t *rq;
> 
>  +	if ((p->flags & PF_FUTEX_DEBUG)
>  +	    && !(current->flags & PF_FUTEX_DEBUG)) {
>  +		printk("%s %i waking %s: %i %i\n",
>  +		       current->comm, (int)in_interrupt(),
>  +		       p->comm, p->tgid, p->pid);
>  +		WARN_ON(1);
>  +	}
>  +

If the schedule_timeout() expires then this wakeup will occur from within
the timer interrupt - current could point at any old thing.  We will get
bogus warnings.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:01    [W:0.577 / U:0.060 seconds]
©2003-2008 Jasper Spaans