svn commit: r273547 - head/sys/net
Andrey V. Elsukov
ae at FreeBSD.org
Thu Oct 23 14:29:53 UTC 2014
Author: ae
Date: Thu Oct 23 14:29:52 2014
New Revision: 273547
URL: https://svnweb.freebsd.org/changeset/base/273547
Log:
Move if_get_counter initialization from if_attach into if_alloc.
Also, initialize all counters before ifnet will become available in the system.
This fixes possible access to uninitialized ifned fields.
PR: 194550
Modified:
head/sys/net/if.c
Modified: head/sys/net/if.c
==============================================================================
--- head/sys/net/if.c Thu Oct 23 13:47:19 2014 (r273546)
+++ head/sys/net/if.c Thu Oct 23 14:29:52 2014 (r273547)
@@ -467,11 +467,10 @@ if_alloc(u_char type)
ifq_init(&ifp->if_snd, ifp);
refcount_init(&ifp->if_refcount, 1); /* Index reference. */
- ifnet_setbyindex(ifp->if_index, ifp);
-
for (int i = 0; i < IFCOUNTERS; i++)
ifp->if_counters[i] = counter_u64_alloc(M_WAITOK);
-
+ ifp->if_get_counter = if_get_counter_default;
+ ifnet_setbyindex(ifp->if_index, ifp);
return (ifp);
}
@@ -674,9 +673,6 @@ if_attach_internal(struct ifnet *ifp, in
ifp->if_qflush = if_qflush;
}
- if (ifp->if_get_counter == NULL)
- ifp->if_get_counter = if_get_counter_default;
-
if (!vmove) {
#ifdef MAC
mac_ifnet_create(ifp);
More information about the svn-src-all
mailing list