git: af1bd15d3be3 - stable/14 - udp: Do not recursively enter net epoch

From: Zhenlei Huang <zlei_at_FreeBSD.org>
Date: Thu, 13 Mar 2025 10:14:23 UTC
The branch stable/14 has been updated by zlei:

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

commit af1bd15d3be3f1f348e0a0237a4edad636c4fc1b
Author:     Zhenlei Huang <zlei@FreeBSD.org>
AuthorDate: 2025-03-05 04:57:30 +0000
Commit:     Zhenlei Huang <zlei@FreeBSD.org>
CommitDate: 2025-03-13 10:13:50 +0000

    udp: Do not recursively enter net epoch
    
    The only caller udp_send() has already entered net epoch before invoking
    udp_v4mapped_pktinfo().
    
    No functional change intended.
    
    This partially reverts commit d74b7baeb0d4 (ifnet_byindex() actually
    requires network epoch).
    
    Reviewed by:    ae, glebius
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D49227
    
    (cherry picked from commit 2472f4dbe93049d70afe0897f66f9651b67672e9)
---
 sys/netinet/udp_usrreq.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
index 0ea065f15ce4..178b5b431cf3 100644
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -1016,6 +1016,8 @@ udp_v4mapped_pktinfo(struct cmsghdr *cm, struct sockaddr_in * src,
 	struct in6_pktinfo *pktinfo;
 	struct in_addr ia;
 
+	NET_EPOCH_ASSERT();
+
 	if ((flags & PRUS_IPV6) == 0)
 		return (0);
 
@@ -1037,11 +1039,7 @@ udp_v4mapped_pktinfo(struct cmsghdr *cm, struct sockaddr_in * src,
 
 	/* Validate the interface index if specified. */
 	if (pktinfo->ipi6_ifindex) {
-		struct epoch_tracker et;
-
-		NET_EPOCH_ENTER(et);
 		ifp = ifnet_byindex(pktinfo->ipi6_ifindex);
-		NET_EPOCH_EXIT(et);	/* XXXGL: unsafe ifp */
 		if (ifp == NULL)
 			return (ENXIO);
 	} else