git: 0fd31cf69032 - main - mroute: fix a sysctl vs teardown race

From: Mateusz Guzik <mjg_at_FreeBSD.org>
Date: Mon, 10 Feb 2025 14:47:47 UTC
The branch main has been updated by mjg:

URL: https://cgit.FreeBSD.org/src/commit/?id=0fd31cf690328558b8a12ff65397438efc345932

commit 0fd31cf690328558b8a12ff65397438efc345932
Author:     Mateusz Guzik <mjg@FreeBSD.org>
AuthorDate: 2025-02-10 14:45:17 +0000
Commit:     Mateusz Guzik <mjg@FreeBSD.org>
CommitDate: 2025-02-10 14:45:36 +0000

    mroute: fix a sysctl vs teardown race
    
    Sponsored by:   Rubicon Communications, LLC ("Netgate")
---
 sys/netinet/ip_mroute.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/sys/netinet/ip_mroute.c b/sys/netinet/ip_mroute.c
index 6e6ecd43e9fe..e224d2e6daf5 100644
--- a/sys/netinet/ip_mroute.c
+++ b/sys/netinet/ip_mroute.c
@@ -2739,6 +2739,9 @@ sysctl_mfctable(SYSCTL_HANDLER_ARGS)
 		return (error);
 
 	MRW_RLOCK();
+	if (V_mfchashtbl == NULL)
+		goto out_locked;
+
 	for (i = 0; i < mfchashsize; i++) {
 		LIST_FOREACH(rt, &V_mfchashtbl[i], mfc_hash) {
 			error = SYSCTL_OUT(req, rt, sizeof(struct mfc));