summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2003-10-29 23:01:37 +0000
committersam <sam@FreeBSD.org>2003-10-29 23:01:37 +0000
commit3ac5936ae2d8a943a85870924dded1c08cbf2aed (patch)
tree65750219d13f0027cb1936d4d4e061eee93a183e /sys
parentf188fceee73166a2c7dc46b964dffa3eb6f8de97 (diff)
downloadFreeBSD-src-3ac5936ae2d8a943a85870924dded1c08cbf2aed.zip
FreeBSD-src-3ac5936ae2d8a943a85870924dded1c08cbf2aed.tar.gz
avoid recursive lock panic by unlocking before calling rtrequest;
this is consistent with other places but will be replaced shortly by a "proper fix" Supported by: FreeBSD Foundation Pain felt by: Jiri Mikulas
Diffstat (limited to 'sys')
-rw-r--r--sys/net/route.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/net/route.c b/sys/net/route.c
index 46e811d..ea98172 100644
--- a/sys/net/route.c
+++ b/sys/net/route.c
@@ -684,11 +684,12 @@ rtrequest1(int req, struct rt_addrinfo *info, struct rtentry **ret_nrt)
*/
rt2 = rtalloc1(dst, 0, RTF_PRCLONING);
if (rt2 && rt2->rt_parent) {
+ RT_UNLOCK(rt2); /* XXX recursive lock */
rtrequest(RTM_DELETE,
rt_key(rt2),
rt2->rt_gateway,
rt_mask(rt2), rt2->rt_flags, 0);
- RTFREE_LOCKED(rt2);
+ RTFREE(rt2);
rn = rnh->rnh_addaddr(ndst, netmask,
rnh, rt->rt_nodes);
} else if (rt2) {
OpenPOWER on IntegriCloud