netdev
[Top] [All Lists]

Re: tx_timeout and timer serialisation

To: Andrey Savochkin <saw@xxxxxxxxxxxxx>
Subject: Re: tx_timeout and timer serialisation
From: Andrew Morton <andrewm@xxxxxxxxxx>
Date: Sat, 20 May 2000 15:22:27 +1000
Cc: Donald Becker <becker@xxxxxxxxx>, netdev@xxxxxxxxxxx, Jeff Garzik <jgarzik@xxxxxxxxxxxxxxxx>
References: <3925BB00.B1CDDFE7@xxxxxxxxxxxxxxxx> <Pine.LNX.4.10.10005192039250.825-100000@xxxxxxxxxxxxx>, <Pine.LNX.4.10.10005192039250.825-100000@xxxxxxxxxxxxx>; from "Donald Becker" on Fri, May 19, 2000 at 08:48:15PM <20000520122715.A7682@xxxxxxxxxxxxx>
Sender: owner-netdev@xxxxxxxxxxx
Andrey Savochkin wrote:
> 
> I suppose, del_timer() call should be wrapped by
> start_bh_atomic/end_bh_atomic pair which provides global serialization
> against BHs.

Those functions aren't present in 2.3...  I guess they were unneeded
because all the old-style BH's are sequentially run from within a single
new-style tasklet, under global_bh_lock.  So the old-style handlers are
globally serialised.



I have just written a little kernel module which has confirmed that the
handler-keeps-running-after-del_timer bug exists in both 2.2.14 and
2.3.99-pre9.  Not good.  Very not good, IMO.

I think I have a fix which will preserve the current (completely
magical) timer semantics.  It's ugly as sin, but that's the price.   
Later today, perhaps.

The test module is at http://www.uow.edu.au/~andrewm/timertest.tar.gz

( I wanna know why my kernel thread shows up in ps as "insmod
timertest.o" but everyone else's has nifty names like "[kflushd]" )


-- 
-akpm-

<Prev in Thread] Current Thread [Next in Thread>