From owner-p4-projects@FreeBSD.ORG Wed Sep 12 09:10:12 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 20B7816A420; Wed, 12 Sep 2007 09:10:12 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E8E3616A417 for ; Wed, 12 Sep 2007 09:10:11 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id D481913C48E for ; Wed, 12 Sep 2007 09:10:11 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l8C9ABC2097844 for ; Wed, 12 Sep 2007 09:10:11 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l8C9ABr1097841 for perforce@freebsd.org; Wed, 12 Sep 2007 09:10:11 GMT (envelope-from kmacy@freebsd.org) Date: Wed, 12 Sep 2007 09:10:11 GMT Message-Id: <200709120910.l8C9ABr1097841@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 126332 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Sep 2007 09:10:12 -0000 http://perforce.freebsd.org/chv.cgi?CH=126332 Change 126332 by kmacy@kmacy_home:ethng on 2007/09/12 09:09:19 acquire the rnh lock shared for the lookup and matchaddr case Affected files ... .. //depot/projects/ethng/src/sys/net/route.c#3 edit .. //depot/projects/ethng/src/sys/net/rtsock.c#3 edit Differences ... ==== //depot/projects/ethng/src/sys/net/route.c#3 (text+ko) ==== @@ -144,7 +144,7 @@ rtstat.rts_unreach++; goto miss2; } - RADIX_NODE_HEAD_LOCK(rnh); + RADIX_NODE_HEAD_LOCK_SHARED(rnh); if ((rn = rnh->rnh_matchaddr(dst, rnh)) && (rn->rn_flags & RNF_ROOT) == 0) { /* @@ -197,7 +197,7 @@ RT_LOCK(newrt); RT_ADDREF(newrt); } - RADIX_NODE_HEAD_UNLOCK(rnh); + RADIX_NODE_HEAD_UNLOCK_SHARED(rnh); } else { /* * Either we hit the root or couldn't find any match, @@ -206,7 +206,7 @@ */ rtstat.rts_unreach++; miss: - RADIX_NODE_HEAD_UNLOCK(rnh); + RADIX_NODE_HEAD_UNLOCK_SHARED(rnh); miss2: if (report) { /* * If required, report the failure to the supervising @@ -1190,12 +1190,12 @@ */ if ((rnh = rt_tables[dst->sa_family]) == NULL) goto bad; - RADIX_NODE_HEAD_LOCK(rnh); + RADIX_NODE_HEAD_LOCK_SHARED(rnh); error = ((rn = rnh->rnh_lookup(dst, netmask, rnh)) == NULL || (rn->rn_flags & RNF_ROOT) || RNTORT(rn)->rt_ifa != ifa || !sa_equal((struct sockaddr *)rn->rn_key, dst)); - RADIX_NODE_HEAD_UNLOCK(rnh); + RADIX_NODE_HEAD_UNLOCK_SHARED(rnh); if (error) { bad: if (m) ==== //depot/projects/ethng/src/sys/net/rtsock.c#3 (text+ko) ==== @@ -413,16 +413,16 @@ rnh = rt_tables[info.rti_info[RTAX_DST]->sa_family]; if (rnh == NULL) senderr(EAFNOSUPPORT); - RADIX_NODE_HEAD_LOCK(rnh); + RADIX_NODE_HEAD_LOCK_SHARED(rnh); rt = (struct rtentry *) rnh->rnh_lookup(info.rti_info[RTAX_DST], info.rti_info[RTAX_NETMASK], rnh); if (rt == NULL) { /* XXX looks bogus */ - RADIX_NODE_HEAD_UNLOCK(rnh); + RADIX_NODE_HEAD_UNLOCK_SHARED(rnh); senderr(ESRCH); } RT_LOCK(rt); RT_ADDREF(rt); - RADIX_NODE_HEAD_UNLOCK(rnh); + RADIX_NODE_HEAD_UNLOCK_SHARED(rnh); /* * Fix for PR: 82974