Page MenuHomeFreeBSD

D37308.diff
No OneTemporary

D37308.diff

diff --git a/sys/netlink/netlink_generic.c b/sys/netlink/netlink_generic.c
--- a/sys/netlink/netlink_generic.c
+++ b/sys/netlink/netlink_generic.c
@@ -133,6 +133,22 @@
free(gf->family_cmds, M_NETLINK);
}
+/*
+ * unregister groups of a given family
+ */
+static void
+unregister_groups(const struct genl_family *gf)
+{
+
+ for (int i = 0; i < MAX_GROUPS; i++) {
+ struct genl_group *gg = &groups[i];
+ if (gg->group_family == gf && gg->group_name != NULL) {
+ gg->group_family = NULL;
+ gg->group_name = NULL;
+ }
+ }
+}
+
/*
* Can sleep, I guess
*/
@@ -148,6 +164,7 @@
if (gf != NULL) {
found = true;
+ unregister_groups(gf);
/* TODO: zero pointer first */
free_family(gf);
bzero(gf, sizeof(*gf));

File Metadata

Mime Type
text/plain
Expires
Tue, Feb 24, 7:30 PM (13 h, 25 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28978074
Default Alt Text
D37308.diff (734 B)

Event Timeline