From owner-cvs-src@FreeBSD.ORG Mon Jan 30 08:39:10 2006 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C716216A420; Mon, 30 Jan 2006 08:39:10 +0000 (GMT) (envelope-from glebius@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 93B3843D45; Mon, 30 Jan 2006 08:39:10 +0000 (GMT) (envelope-from glebius@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k0U8dAwZ064694; Mon, 30 Jan 2006 08:39:10 GMT (envelope-from glebius@repoman.freebsd.org) Received: (from glebius@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k0U8dAVt064693; Mon, 30 Jan 2006 08:39:10 GMT (envelope-from glebius) Message-Id: <200601300839.k0U8dAVt064693@repoman.freebsd.org> From: Gleb Smirnoff Date: Mon, 30 Jan 2006 08:39:10 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/net if_gif.c if_gif.h src/sys/netinet in_gif.c src/sys/netinet6 in6_gif.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2006 08:39:10 -0000 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. Reported by: many Tested by: Alexander Shiryaev Revision Changes Path 1.58 +15 -24 src/sys/net/if_gif.c 1.19 +7 -1 src/sys/net/if_gif.h 1.34 +2 -0 src/sys/netinet/in_gif.c 1.24 +2 -0 src/sys/netinet6/in6_gif.c