Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Jan 2006 11:52:15 +0100
From:      Andre Oppermann <andre@freebsd.org>
To:        Gleb Smirnoff <glebius@FreeBSD.org>
Cc:        cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/net if_gif.c if_gif.h src/sys/netinet  in_gif.csrc/sys/netinet6 in6_gif.c
Message-ID:  <43DDEFDF.7EB5CB65@freebsd.org>
References:  <200601300839.k0U8dAVt064693@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Gleb Smirnoff wrote:
> 
> glebius     2006-01-30 08:39:09 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/net              if_gif.c if_gif.h
>     sys/netinet          in_gif.c
>     sys/netinet6         in6_gif.c
>   Log:
>   Add some initial locking to gif(4). It doesn't covers the whole driver,
>   however IPv4-in-IPv4 tunnels are now stable on SMP. Details:
> 
>   - Add per-softc mutex.
>   - Hold the mutex on output.
> 
>   The main problem was the rtentry, placed in softc. It could be
>   freed by ip_output(). Meanwhile, another thread being in
>   in_gif_output() can read and write this rtentry.

Caching the rtentry in gif(4) is evil anyway.  Just get rid of it(tm).

-- 
Andre



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?43DDEFDF.7EB5CB65>