Page MenuHomeFreeBSD

D55875.id173748.diff
No OneTemporary

D55875.id173748.diff

diff --git a/sys/net/if.c b/sys/net/if.c
--- a/sys/net/if.c
+++ b/sys/net/if.c
@@ -428,8 +428,12 @@
static void
if_link_ifnet(struct ifnet *ifp)
{
-
IFNET_WLOCK();
+
+ MPASS(refcount_load(&ifp->if_refcount) > 0);
+ MPASS(ifp->if_vnet == curvnet);
+ MPASS(ifindex_table[ifp->if_index].ife_ifnet == ifp);
+
CK_STAILQ_INSERT_TAIL(&V_ifnet, ifp, if_link);
#ifdef VIMAGE
curvnet->vnet_ifcnt++;
@@ -446,6 +450,10 @@
IFNET_WLOCK();
CK_STAILQ_FOREACH(iter, &V_ifnet, if_link)
if (iter == ifp) {
+ MPASS(refcount_load(&ifp->if_refcount) > 0);
+ MPASS(ifp->if_vnet == curvnet);
+ MPASS(ifindex_table[ifp->if_index].ife_ifnet == ifp);
+
CK_STAILQ_REMOVE(&V_ifnet, ifp, ifnet, if_link);
if (!vmove)
ifp->if_flags |= IFF_DYING;
@@ -1190,8 +1198,6 @@
bool found;
bool shutdown;
- MPASS(ifindex_table[ifp->if_index].ife_ifnet == ifp);
-
/* Try to find the prison within our visibility. */
sx_slock(&allprison_lock);
pr = prison_find_child(td->td_ucred->cr_prison, jid);
@@ -2123,14 +2129,13 @@
NET_EPOCH_ENTER(et);
CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) {
if (strncmp(name, ifp->if_xname, IFNAMSIZ) == 0 &&
- !(ifp->if_flags & IFF_DYING))
+ !(ifp->if_flags & IFF_DYING)) {
+ MPASS(ifp->if_vnet == curvnet);
+ MPASS(ifindex_table[ifp->if_index].ife_ifnet == ifp);
+ if_ref(ifp);
break;
+ }
}
- if (ifp != NULL) {
- if_ref(ifp);
- MPASS(ifindex_table[ifp->if_index].ife_ifnet == ifp);
- }
-
NET_EPOCH_EXIT(et);
return (ifp);
}
@@ -2143,8 +2148,12 @@
NET_EPOCH_ENTER(et);
CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) {
- if (strncmp(name, ifp->if_xname, IFNAMSIZ) == 0)
+ if (strncmp(name, ifp->if_xname, IFNAMSIZ) == 0) {
+ MPASS(refcount_load(&ifp->if_refcount) > 0);
+ MPASS(ifp->if_vnet == curvnet);
+ MPASS(ifindex_table[ifp->if_index].ife_ifnet == ifp);
break;
+ }
}
NET_EPOCH_EXIT(et);
return (ifp);

File Metadata

Mime Type
text/plain
Expires
Thu, Aug 27, 11:19 AM (6 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
37378728
Default Alt Text
D55875.id173748.diff (1 KB)

Event Timeline