tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: KASSERT() in kern_timeout.c



On Fri, Mar 19, 2010 at 02:16:26PM +0000, Andrew Doran wrote:
> On Fri, Mar 19, 2010 at 12:38:12PM +0100, Manuel Bouyer wrote:
> > Hi,
> > last night I got the panic below on a fairly busy ftp/http server
> > (serving static content). The kernel is 5.0_STABLE from Jan, 19.
> > Does it ring a bell to someone ?
> 
> I'll bet that c->c_cpu is from curcpu and that the callout is running,
> nested below the softnet handler.  General solution: callout_halt() before
> callout_destroy().  This may be tricky because it may need to drop the
> mutex that you hold (in this instance softnet_lock).  See other instances of
> callout_halt() in the TCP code.  I haven't checked the code to verify that
> this is what's happening and I can't remember if the syncache code is already
> using callout_halt().

AFAIK syncache is not using callout_halt(). It's testing callout_invoking()
though. 
I can't say if droping the softnet lock in syn_cache_put() (this is
where the pool_put() really is) is safe or not.

-- 
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
     NetBSD: 26 ans d'experience feront toujours la difference
--


Home | Main Index | Thread Index | Old Index