PERFORCE change 157932 for review
Marko Zec
zec at FreeBSD.org
Thu Feb 19 05:53:12 PST 2009
http://perforce.freebsd.org/chv.cgi?CH=157932
Change 157932 by zec at zec_amdx2 on 2009/02/19 13:52:15
Fix a panic when reassigning ifnet from one vnet to another.
Affected files ...
.. //depot/projects/vimage/src/sys/kern/kern_vimage.c#75 edit
.. //depot/projects/vimage/src/sys/net/if.c#66 edit
.. //depot/projects/vimage/src/sys/net/if_var.h#28 edit
Differences ...
==== //depot/projects/vimage/src/sys/kern/kern_vimage.c#75 (text+ko) ====
@@ -382,7 +382,8 @@
IFNET_WLOCK();
ifnet_setbyindex(ifp->if_index, NULL);
- while (V_if_index > 0 && ifnet_byindex(V_if_index) == NULL)
+ while (V_if_index > 0 &&
+ ifnet_byindex_locked(V_if_index) == NULL)
V_if_index--;
IFNET_WUNLOCK();
} while (0);
@@ -395,7 +396,7 @@
*/
IFNET_WLOCK();
for (ifp->if_index = 1; ifp->if_index <= V_if_index; ifp->if_index++) {
- if (ifnet_byindex(ifp->if_index) == NULL)
+ if (ifnet_byindex_locked(ifp->if_index) == NULL)
break;
}
/* Catch if_index overflow. */
==== //depot/projects/vimage/src/sys/net/if.c#66 (text+ko) ====
@@ -216,7 +216,7 @@
MALLOC_DEFINE(M_IFADDR, "ifaddr", "interface address");
MALLOC_DEFINE(M_IFMADDR, "ether_multi", "link-level multicast address");
-static struct ifnet *
+struct ifnet *
ifnet_byindex_locked(u_short idx)
{
INIT_VNET_NET(curvnet);
==== //depot/projects/vimage/src/sys/net/if_var.h#28 (text+ko) ====
@@ -704,6 +704,7 @@
void ifnet_setbyindex(u_short idx, struct ifnet *ifp);
struct ifnet *ifnet_byindex(u_short idx);
+struct ifnet *ifnet_byindex_locked(u_short idx);
/*
* Given the index, ifaddr_byindex() returns the one and only
More information about the p4-projects
mailing list