git: da988f405229 - stable/13 - netlink: unregister groups along with family
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 23 Jan 2023 22:11:59 UTC
The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=da988f405229e00480516cecb34d8c47f6bbfd88 commit da988f405229e00480516cecb34d8c47f6bbfd88 Author: Baptiste Daroussin <bapt@FreeBSD.org> AuthorDate: 2022-11-08 08:02:43 +0000 Commit: Alexander V. Chernikov <melifaro@FreeBSD.org> CommitDate: 2023-01-23 22:04:03 +0000 netlink: unregister groups along with family Differential Revision: https://reviews.freebsd.org/D37308 Reviewed by: melifaro (cherry picked from commit 1edc3b6e56932e423d778df484ffca3bd2af9e97) --- sys/netlink/netlink_generic.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sys/netlink/netlink_generic.c b/sys/netlink/netlink_generic.c index de45048ff519..267024dfee4b 100644 --- a/sys/netlink/netlink_generic.c +++ b/sys/netlink/netlink_generic.c @@ -133,6 +133,22 @@ free_family(struct genl_family *gf) 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 @@ genl_unregister_family(const char *family_name) if (gf != NULL) { found = true; + unregister_groups(gf); /* TODO: zero pointer first */ free_family(gf); bzero(gf, sizeof(*gf));