summaryrefslogtreecommitdiffstats
path: root/sys/net/if_tun.c
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2009-04-20 23:25:38 +0000
committerrwatson <rwatson@FreeBSD.org>2009-04-20 23:25:38 +0000
commit32db8063b46cde8b3522330d56e6237da695fabf (patch)
tree1361705d7107b6bc74240aef90be15d3026bdbc9 /sys/net/if_tun.c
parent62b8423b511feacc12c6fd0450234aab53d56715 (diff)
downloadFreeBSD-src-32db8063b46cde8b3522330d56e6237da695fabf.zip
FreeBSD-src-32db8063b46cde8b3522330d56e6237da695fabf.tar.gz
Acquire interfce address list lock while walking the interface address
list during tun device initialization. MFC after: 2 weeks
Diffstat (limited to 'sys/net/if_tun.c')
-rw-r--r--sys/net/if_tun.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/net/if_tun.c b/sys/net/if_tun.c
index 0a1d34e..df965be 100644
--- a/sys/net/if_tun.c
+++ b/sys/net/if_tun.c
@@ -520,6 +520,7 @@ tuninit(struct ifnet *ifp)
getmicrotime(&ifp->if_lastchange);
#ifdef INET
+ IF_ADDR_LOCK(ifp);
TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
if (ifa->ifa_addr->sa_family == AF_INET) {
struct sockaddr_in *si;
@@ -535,6 +536,7 @@ tuninit(struct ifnet *ifp)
mtx_unlock(&tp->tun_mtx);
}
}
+ IF_ADDR_UNLOCK(ifp);
#endif
return (error);
}
OpenPOWER on IntegriCloud