Drop current rtentry lock before calling rt_getifa(). This fixes a LOR

and a possible recursive use of rtentry mutex.

PR:		kern/69356
Reviewed by:	sam
This commit is contained in:
Gleb Smirnoff 2005-09-19 16:27:22 +00:00
parent 7e47fb024c
commit a11faa9f8d

View File

@ -496,10 +496,10 @@ route_output(struct mbuf *m, struct socket *so)
(info.rti_info[RTAX_IFA] != NULL &&
!sa_equal(info.rti_info[RTAX_IFA],
rt->rt_ifa->ifa_addr))) {
if ((error = rt_getifa(&info)) != 0) {
RT_UNLOCK(rt);
RT_UNLOCK(rt);
if ((error = rt_getifa(&info)) != 0)
senderr(error);
}
RT_LOCK(rt);
}
if (info.rti_info[RTAX_GATEWAY] != NULL &&
(error = rt_setgate(rt, rt_key(rt),