diff options
Diffstat (limited to 'sys/net/rtsock.c')
-rw-r--r-- | sys/net/rtsock.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c index 6b7c29b..dd19dfc 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. |