Date: Tue, 8 Nov 2022 11:47:58 GMT From: Baptiste Daroussin <bapt@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 1edc3b6e5693 - main - netlink: unregister groups along with family Message-ID: <202211081147.2A8BlwXN073301@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=1edc3b6e56932e423d778df484ffca3bd2af9e97 commit 1edc3b6e56932e423d778df484ffca3bd2af9e97 Author: Baptiste Daroussin <bapt@FreeBSD.org> AuthorDate: 2022-11-08 08:02:43 +0000 Commit: Baptiste Daroussin <bapt@FreeBSD.org> CommitDate: 2022-11-08 11:46:58 +0000 netlink: unregister groups along with family Differential Revision: https://reviews.freebsd.org/D37308 Reviewed by: melifaro --- 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));
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202211081147.2A8BlwXN073301>