blob: e97412b4a78b5d1e7bb033379bdb24e07a1240d3 [file] [log] [blame]
From foo@baz Tue Apr 9 12:12:43 2002
Date: Fri, 11 Mar 2005 21:46:29 +0000
From: Ralf Baechle DL5RB <ralf@linux-mips.org>
To: stable@kernel.org
Subject: [PATCH] Timercode race in AX.25
When destroying a socket ax25_destroy_socket tries to stop the protocol's
T1 timer before freeing the memory. If things are just right using the
non-sync variant of del_timer means the timer will continue to run even
after the del_timer because it's adding itself again which is likely to
result in a crash when the timer is executed again a few seconds later.
del_timer_sync can be expensive, so I don't want this one to go into 2.6
mainline where I'll try to cook something that is less intrusive than
regular calls to del_timer_sync.
Signed-off-by: Ralf Baechle DL5RB <ralf@linux-mips.org>
Signed-off-by: Chris Wright <chrisw@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- bk-afu.orig/net/ax25/ax25_timer.c 2005-03-08 13:54:06.000000000 +0000
+++ bk-afu/net/ax25/ax25_timer.c 2005-03-08 16:43:34.790532976 +0000
@@ -106,7 +106,7 @@
void ax25_stop_t1timer(ax25_cb *ax25)
{
- del_timer(&ax25->t1timer);
+ del_timer_sync(&ax25->t1timer);
}
void ax25_stop_t2timer(ax25_cb *ax25)