diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c index 6b7c29b47e7..dd19dfc94b8 100644 --- a/sys/net/rtsock.c +++ b/sys/net/rtsock.c @@ -356,6 +356,7 @@ rtm_get_jailed(struct rt_addrinfo *info, struct ifnet *ifp, * Try to find an address on the given outgoing interface * that belongs to the jail. */ + IF_ADDR_LOCK(ifp); TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { struct sockaddr *sa; sa = ifa->ifa_addr; @@ -367,6 +368,7 @@ rtm_get_jailed(struct rt_addrinfo *info, struct ifnet *ifp, break; } } + IF_ADDR_UNLOCK(ifp); if (!found) { /* * As a last resort return the 'default' jail address. @@ -394,6 +396,7 @@ rtm_get_jailed(struct rt_addrinfo *info, struct ifnet *ifp, * Try to find an address on the given outgoing interface * that belongs to the jail. */ + IF_ADDR_LOCK(ifp); TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { struct sockaddr *sa; sa = ifa->ifa_addr; @@ -406,6 +409,7 @@ rtm_get_jailed(struct rt_addrinfo *info, struct ifnet *ifp, break; } } + IF_ADDR_UNLOCK(ifp); if (!found) { /* * As a last resort return the 'default' jail address.