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>