diff options
author | rwatson <rwatson@FreeBSD.org> | 2009-04-20 23:25:38 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2009-04-20 23:25:38 +0000 |
commit | 32db8063b46cde8b3522330d56e6237da695fabf (patch) | |
tree | 1361705d7107b6bc74240aef90be15d3026bdbc9 /sys/net/if_tun.c | |
parent | 62b8423b511feacc12c6fd0450234aab53d56715 (diff) | |
download | FreeBSD-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.c | 2 |
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); } |