From owner-freebsd-stable@FreeBSD.ORG Wed Mar 16 19:39:07 2005 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9052B16A4CE; Wed, 16 Mar 2005 19:39:07 +0000 (GMT) Received: from cheer.mahoroba.org (gw4.mahoroba.org [218.45.22.175]) by mx1.FreeBSD.org (Postfix) with ESMTP id BC9EF43D48; Wed, 16 Mar 2005 19:39:06 +0000 (GMT) (envelope-from ume@mahoroba.org) Received: from lyrics.mahoroba.org (ume@lyrics.mahoroba.org [IPv6:3ffe:501:185b:8010:280:88ff:fe03:4841]) (user=ume mech=CRAM-MD5 bits=0)j2GJcfTc060744 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 17 Mar 2005 04:38:45 +0900 (JST) (envelope-from ume@mahoroba.org) Date: Thu, 17 Mar 2005 04:38:40 +0900 Message-ID: From: Hajimu UMEMOTO To: Sam Leffler In-Reply-To: <4238782A.7010606@errno.com> References: <6.2.1.2.0.20050315112131.054b56f8@64.7.153.2> <4237523B.7090005@errno.com> <4238782A.7010606@errno.com> User-Agent: xcite1.38> Wanderlust/2.13.3 (You Oughta Know) SEMI/1.14.6 (Maruoka) FLIM/1.14.7 (=?ISO-8859-4?Q?Sanj=F2?=) APEL/10.6 Emacs/22.0.50 (i386-unknown-freebsd5.4) MULE/5.0 (SAKAKI) X-Operating-System: FreeBSD 5.4-PRERELEASE MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII X-Greylist: Sender succeded SMTP AUTH authentication, not delayed by milter-greylist-2.0b2 (cheer.mahoroba.org [IPv6:3ffe:501:185b:8010::1]); Thu, 17 Mar 2005 04:38:46 +0900 (JST) X-Virus-Scanned: by amavisd-new X-Virus-Status: Clean X-Spam-Status: No, score=-5.7 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.0.2 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on cheer.mahoroba.org cc: freebsd-stable@freebsd.org Subject: Re: RELENG_5 and FAST_IPSEC limits X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Mar 2005 19:39:07 -0000 Hi, >>>>> On Wed, 16 Mar 2005 10:17:14 -0800 >>>>> Sam Leffler said: sam> Note the change lacks any locking so if your SA db is changing there's a sam> good chance you'll blow up. Ah, yes. I forgot the fact that FAST_IPSEC is mpsafe. How about this? This is againt sys/netipsec/key.c with my previous patch applied. Index: sys/netipsec/key.c diff -u -p sys/netipsec/key.c.old sys/netipsec/key.c --- sys/netipsec/key.c.old Thu Mar 17 03:52:18 2005 +++ sys/netipsec/key.c Thu Mar 17 04:01:50 2005 @@ -2408,6 +2408,7 @@ key_setspddump(errorp) /* search SPD entry and get buffer size. */ cnt = 0; + SPTREE_LOCK(); for (dir = 0; dir < IPSEC_DIR_MAX; dir++) { LIST_FOREACH(sp, &sptree[dir], chain) { cnt++; @@ -2415,6 +2416,7 @@ key_setspddump(errorp) } if (cnt == 0) { + SPTREE_UNLOCK(); *errorp = ENOENT; return (NULL); } @@ -2426,6 +2428,7 @@ key_setspddump(errorp) n = key_setdumpsp(sp, SADB_X_SPDDUMP, cnt, 0); if (!n) { + SPTREE_UNLOCK(); *errorp = ENOBUFS; m_freem(m); return (NULL); @@ -2438,6 +2441,7 @@ key_setspddump(errorp) } } } + SPTREE_UNLOCK(); *errorp = 0; return (m); @@ -6572,6 +6576,7 @@ key_setdump(req_satype, errorp) /* count sav entries to be sent to the userland. */ cnt = 0; + SAHTREE_LOCK(); LIST_FOREACH(sah, &sahtree, chain) { if (req_satype != SADB_SATYPE_UNSPEC && proto != sah->saidx.proto) @@ -6588,6 +6593,7 @@ key_setdump(req_satype, errorp) } if (cnt == 0) { + SAHTREE_UNLOCK(); *errorp = ENOENT; return (NULL); } @@ -6601,6 +6607,7 @@ key_setdump(req_satype, errorp) /* map proto to satype */ if ((satype = key_proto2satype(sah->saidx.proto)) == 0) { + SAHTREE_UNLOCK(); m_freem(m); *errorp = EINVAL; return (NULL); @@ -6614,6 +6621,7 @@ key_setdump(req_satype, errorp) n = key_setdumpsa(sav, SADB_DUMP, satype, --cnt, 0); if (!n) { + SAHTREE_UNLOCK(); m_freem(m); *errorp = ENOBUFS; return (NULL); @@ -6626,6 +6634,7 @@ key_setdump(req_satype, errorp) } } } + SAHTREE_UNLOCK(); if (!m) { *errorp = EINVAL; Sincerely, -- Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan ume@mahoroba.org ume@{,jp.}FreeBSD.org http://www.imasy.org/~ume/