M_TEMP seems unreasonable for interface groups data allocations. Don't forget to recompile systat(1) and vmstat(8) with new sys/malloc.h.
Index: sys/net/if.c =================================================================== RCS file: /cvs/src/sys/net/if.c,v retrieving revision 1.700 diff -u -p -r1.700 if.c --- sys/net/if.c 12 Jun 2023 21:19:54 -0000 1.700 +++ sys/net/if.c 27 Jun 2023 10:15:12 -0000 @@ -2784,7 +2784,7 @@ if_creategroup(const char *groupname) { struct ifg_group *ifg; - if ((ifg = malloc(sizeof(*ifg), M_TEMP, M_NOWAIT)) == NULL) + if ((ifg = malloc(sizeof(*ifg), M_IFGROUP, M_NOWAIT)) == NULL) return (NULL); strlcpy(ifg->ifg_group, groupname, sizeof(ifg->ifg_group)); @@ -2819,11 +2819,11 @@ if_addgroup(struct ifnet *ifp, const cha if (!strcmp(ifgl->ifgl_group->ifg_group, groupname)) return (EEXIST); - if ((ifgl = malloc(sizeof(*ifgl), M_TEMP, M_NOWAIT)) == NULL) + if ((ifgl = malloc(sizeof(*ifgl), M_IFGROUP, M_NOWAIT)) == NULL) return (ENOMEM); - if ((ifgm = malloc(sizeof(*ifgm), M_TEMP, M_NOWAIT)) == NULL) { - free(ifgl, M_TEMP, sizeof(*ifgl)); + if ((ifgm = malloc(sizeof(*ifgm), M_IFGROUP, M_NOWAIT)) == NULL) { + free(ifgl, M_IFGROUP, sizeof(*ifgl)); return (ENOMEM); } @@ -2834,8 +2834,8 @@ if_addgroup(struct ifnet *ifp, const cha if (ifg == NULL) { ifg = if_creategroup(groupname); if (ifg == NULL) { - free(ifgl, M_TEMP, sizeof(*ifgl)); - free(ifgm, M_TEMP, sizeof(*ifgm)); + free(ifgl, M_IFGROUP, sizeof(*ifgl)); + free(ifgm, M_IFGROUP, sizeof(*ifgm)); return (ENOMEM); } } else @@ -2878,7 +2878,7 @@ if_delgroup(struct ifnet *ifp, const cha if (ifgm != NULL) { TAILQ_REMOVE(&ifgl->ifgl_group->ifg_members, ifgm, ifgm_next); - free(ifgm, M_TEMP, sizeof(*ifgm)); + free(ifgm, M_IFGROUP, sizeof(*ifgm)); } #if NPF > 0 @@ -2891,10 +2891,10 @@ if_delgroup(struct ifnet *ifp, const cha #if NPF > 0 pfi_detach_ifgroup(ifgl->ifgl_group); #endif - free(ifgl->ifgl_group, M_TEMP, sizeof(*ifgl->ifgl_group)); + free(ifgl->ifgl_group, M_IFGROUP, sizeof(*ifgl->ifgl_group)); } - free(ifgl, M_TEMP, sizeof(*ifgl)); + free(ifgl, M_IFGROUP, sizeof(*ifgl)); return (0); } Index: sys/sys/malloc.h =================================================================== RCS file: /cvs/src/sys/sys/malloc.h,v retrieving revision 1.122 diff -u -p -r1.122 malloc.h --- sys/sys/malloc.h 3 Feb 2022 17:18:22 -0000 1.122 +++ sys/sys/malloc.h 27 Jun 2023 10:15:13 -0000 @@ -72,7 +72,7 @@ /* 7 - free */ /* 8 - free */ #define M_IFADDR 9 /* interface address */ -/* 10 - free */ +#define M_IFGROUP 10 /* interface group */ #define M_SYSCTL 11 /* sysctl buffers (persistent storage) */ #define M_COUNTERS 12 /* per CPU counters */ /* 13 - free */ @@ -190,7 +190,7 @@ NULL, \ NULL, \ "ifaddr", /* 9 M_IFADDR */ \ - NULL, \ + "ifgroup", /* 10 M_IFGROUP */ \ "sysctl", /* 11 M_SYSCTL */ \ "counters", /* 12 M_COUNTERS */ \ NULL, \