git: 335fc09ab8d2 - main - netlink: plug lock leak in genl_register_family()

From: Gleb Smirnoff <glebius_at_FreeBSD.org>
Date: Sat, 08 Nov 2025 18:03:25 UTC
The branch main has been updated by glebius:

URL: https://cgit.FreeBSD.org/src/commit/?id=335fc09ab8d25c3ced027d46f5a0f4103d5c8bee

commit 335fc09ab8d25c3ced027d46f5a0f4103d5c8bee
Author:     Bruno Silvestre <bruno.silvestre@gmail.com>
AuthorDate: 2025-11-08 18:02:32 +0000
Commit:     Gleb Smirnoff <glebius@FreeBSD.org>
CommitDate: 2025-11-08 18:02:32 +0000

    netlink: plug lock leak in genl_register_family()
    
    PR:             290893
---
 sys/netlink/netlink_generic.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/sys/netlink/netlink_generic.c b/sys/netlink/netlink_generic.c
index 00f47e60f013..d20ec4c7545f 100644
--- a/sys/netlink/netlink_generic.c
+++ b/sys/netlink/netlink_generic.c
@@ -366,8 +366,10 @@ genl_register_family(const char *family_name, size_t hdrsize,
 	GENL_LOCK();
 	for (u_int i = 0; i < MAX_FAMILIES; i++)
 		if (families[i].family_name != NULL &&
-		    strcmp(families[i].family_name, family_name) == 0)
+		    strcmp(families[i].family_name, family_name) == 0) {
+			GENL_UNLOCK();
 			return (0);
+		}
 
 	/* Microoptimization: index 0 is reserved for the control family. */
 	gf = NULL;