tech-kern archive

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

Re: KASSERT() in kern_timeout.c



Manuel Bouyer <bouyer%antioche.eu.org@localhost> wrote:
> > 
> > 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.
> 
> Can someone familiar with the TCP code have a look at this ?
> I've got several panic from this bug since I wrote this mail, I've
> looked at it quickly and the fix doesn't look obvious ...

There are multiple paths calling syn_cache_put() and not only SYN cache,
but also upper TCP layers and IP would need to be inspected.  Unlikely to
be safe and unlikely to be trivial to re-structure to be safe.. there we
shall start a big MP-safe network stack revamp.

For a quick fix (apart from horrible hack, like having another softint
or kthread), it seems that we can use SCF_DEAD with syn_cache_timer()
invoked via our callout, which would destroy... itself.  :)

-- 
Mindaugas


Home | Main Index | Thread Index | Old Index