From owner-cvs-all@FreeBSD.ORG Mon Jan 30 10:52:00 2006 Return-Path: X-Original-To: cvs-all@FreeBSD.org Delivered-To: cvs-all@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5038B16A420 for ; Mon, 30 Jan 2006 10:52:00 +0000 (GMT) (envelope-from andre@freebsd.org) Received: from c00l3r.networx.ch (c00l3r.networx.ch [62.48.2.2]) by mx1.FreeBSD.org (Postfix) with ESMTP id BDDD643D5C for ; Mon, 30 Jan 2006 10:51:58 +0000 (GMT) (envelope-from andre@freebsd.org) Received: (qmail 53086 invoked from network); 30 Jan 2006 10:51:12 -0000 Received: from c00l3r.networx.ch (HELO freebsd.org) ([62.48.2.2]) (envelope-sender ) by c00l3r.networx.ch (qmail-ldap-1.03) with SMTP for ; 30 Jan 2006 10:51:12 -0000 Message-ID: <43DDEFDF.7EB5CB65@freebsd.org> Date: Mon, 30 Jan 2006 11:52:15 +0100 From: Andre Oppermann X-Mailer: Mozilla 4.8 [en] (Windows NT 5.0; U) X-Accept-Language: en MIME-Version: 1.0 To: Gleb Smirnoff References: <200601300839.k0U8dAVt064693@repoman.freebsd.org> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit 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 X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2006 10:52:00 -0000 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