summaryrefslogtreecommitdiffstats
path: root/sys/net/route.c
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2003-11-25 19:52:12 +0000
committersam <sam@FreeBSD.org>2003-11-25 19:52:12 +0000
commitc8cbcaf0aeb317cc70c6a8c16a6922548ed8144c (patch)
tree292a6cb993135b51be5585b4020c4f6aead79041 /sys/net/route.c
parentbcbc28157df4a4316ddfb9df701a42ed487ceaca (diff)
downloadFreeBSD-src-c8cbcaf0aeb317cc70c6a8c16a6922548ed8144c.zip
FreeBSD-src-c8cbcaf0aeb317cc70c6a8c16a6922548ed8144c.tar.gz
workaround LOR in rt_setgate
Reviewed by: andre Approved by: re (rwatson)
Diffstat (limited to 'sys/net/route.c')
-rw-r--r--sys/net/route.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/net/route.c b/sys/net/route.c
index b625e7a..12c4f97 100644
--- a/sys/net/route.c
+++ b/sys/net/route.c
@@ -1111,8 +1111,10 @@ rt_setgate(struct rtentry *rt, struct sockaddr *dst, struct sockaddr *gate)
arg.rnh = rnh;
arg.rt0 = rt;
- /* XXX LOR here */
+ /* XXX workaround LOR */
+ RT_UNLOCK(rt);
RADIX_NODE_HEAD_LOCK(rnh);
+ RT_LOCK(rt);
rnh->rnh_walktree_from(rnh, rt_key(rt), rt_mask(rt),
rt_fixchange, &arg);
RADIX_NODE_HEAD_UNLOCK(rnh);
OpenPOWER on IntegriCloud