lkml.org 
[lkml]   [2000]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: timer_bh robusteness fix against potential deadlocks
On Wed, 12 Jan 2000, Andrea Arcangeli wrote:

>+ while (timer) {
> void (*fn)(unsigned long) = timer->function;
> unsigned long data = timer->data;
>- detach_timer(timer);
>- timer->next = timer->prev = NULL;
>+ struct timer_list * tmp = timer;
>+ timer = timer->next;
>+ detach_timer(tmp);
>+ tmp->next = tmp->prev = NULL;
> spin_unlock_irq(&timerlist_lock);

If at this point the timer pointed by "timer" gets detached while "fn" is
running, at the next loop the machine is going to fail. I am sorry.

>Or you can download the patch from here:
>
> ftp://ftp.*.kernel.org/pub/linux/kernel/people/andrea/patches/v2.2/2.2.14/timer_bh-deadlock-1.gz
> ftp://ftp.*.kernel.org/pub/linux/kernel/people/andrea/patches/v2.3/2.3.38/timer_bh-deadlock-1.gz

Please don't use the two timer_bh patches quoted above (neither the -2
optimized version). Having the timer robust against buggy users is not
necessary but only desiderable, so actually you don't need it.
Nevertheless I'll fix the problem soon.

FYI: the delack-timer-3 patch here:

ftp://ftp.*.kernel.org/pub/linux/kernel/people/andrea/patches/v2.2/2.2.14/delack-timer-3.gz

seems to fix the wait_on_bh popular deadlock on UP/SMP webservers fine :).

Andrea


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

\
 
 \ /
  Last update: 2005-03-22 13:55    [W:0.056 / U:0.256 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site