Interface groups are allocated as follows: struct ifg_group * if_creategroup(const char *groupname) { struct ifg_group *ifg;
if ((ifg = malloc(sizeof(*ifg), M_TEMP, M_NOWAIT)) == NULL) return (NULL); ... } Since this allocation per group does not change, we can use the same size when freeing it in if_delgroup() accordingly. Tested on sparc64. Feedback? OK? Index: sys/net/if.c =================================================================== RCS file: /cvs/src/sys/net/if.c,v retrieving revision 1.610 diff -u -p -r1.610 if.c --- sys/net/if.c 22 Jun 2020 09:45:13 -0000 1.610 +++ sys/net/if.c 30 Jun 2020 02:00:31 -0000 @@ -2774,7 +2774,7 @@ if_delgroup(struct ifnet *ifp, const cha #if NPF > 0 pfi_detach_ifgroup(ifgl->ifgl_group); #endif - free(ifgl->ifgl_group, M_TEMP, 0); + free(ifgl->ifgl_group, M_TEMP, sizeof(*ifgl->ifgl_group)); } free(ifgl, M_TEMP, sizeof(*ifgl));