Module Name:    src
Committed By:   martin
Date:           Sat Jul 20 14:34:24 UTC 2024

Modified Files:
        src/sys/netinet6 [netbsd-10]: ip6_output.c
        src/sys/netipsec [netbsd-10]: ipsec.c ipsec_input.c ipsec_output.c

Log Message:
Pull up following revision(s) (requested by rin in ticket #740):

        sys/netipsec/ipsec_input.c: revision 1.79
        sys/netipsec/ipsec_output.c: revision 1.86
        sys/netipsec/ipsec.c: revision 1.178
        sys/netinet6/ip6_output.c: revision 1.232

ipsec: remove unnecessary splsoftnet

Because the code of IPsec itself is already MP-safe.


To generate a diff of this commit:
cvs rdiff -u -r1.231.2.2 -r1.231.2.3 src/sys/netinet6/ip6_output.c
cvs rdiff -u -r1.177 -r1.177.2.1 src/sys/netipsec/ipsec.c
cvs rdiff -u -r1.78 -r1.78.4.1 src/sys/netipsec/ipsec_input.c
cvs rdiff -u -r1.85 -r1.85.4.1 src/sys/netipsec/ipsec_output.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/netinet6/ip6_output.c
diff -u src/sys/netinet6/ip6_output.c:1.231.2.2 src/sys/netinet6/ip6_output.c:1.231.2.3
--- src/sys/netinet6/ip6_output.c:1.231.2.2	Fri Aug  4 14:28:01 2023
+++ src/sys/netinet6/ip6_output.c	Sat Jul 20 14:34:24 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: ip6_output.c,v 1.231.2.2 2023/08/04 14:28:01 martin Exp $	*/
+/*	$NetBSD: ip6_output.c,v 1.231.2.3 2024/07/20 14:34:24 martin Exp $	*/
 /*	$KAME: ip6_output.c,v 1.172 2001/03/25 09:55:56 itojun Exp $	*/
 
 /*
@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip6_output.c,v 1.231.2.2 2023/08/04 14:28:01 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip6_output.c,v 1.231.2.3 2024/07/20 14:34:24 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -490,9 +490,7 @@ ip6_output(
 
 #ifdef IPSEC
 	if (needipsec) {
-		int s = splsoftnet();
 		error = ipsec6_process_packet(m, sp->req, flags);
-		splx(s);
 
 		/*
 		 * Preserve KAME behaviour: ENOENT can be returned

Index: src/sys/netipsec/ipsec.c
diff -u src/sys/netipsec/ipsec.c:1.177 src/sys/netipsec/ipsec.c:1.177.2.1
--- src/sys/netipsec/ipsec.c:1.177	Thu Dec  8 08:07:07 2022
+++ src/sys/netipsec/ipsec.c	Sat Jul 20 14:34:24 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: ipsec.c,v 1.177 2022/12/08 08:07:07 knakahara Exp $ */
+/* $NetBSD: ipsec.c,v 1.177.2.1 2024/07/20 14:34:24 martin Exp $ */
 /* $FreeBSD: ipsec.c,v 1.2.2.2 2003/07/01 01:38:13 sam Exp $ */
 /* $KAME: ipsec.c,v 1.103 2001/05/24 07:14:18 sakane Exp $ */
 
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.177 2022/12/08 08:07:07 knakahara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.177.2.1 2024/07/20 14:34:24 martin Exp $");
 
 /*
  * IPsec controller part.
@@ -619,7 +619,7 @@ ipsec4_output(struct mbuf *m, struct inp
 {
 	struct secpolicy *sp = NULL;
 	u_long _mtu = 0;
-	int error, s;
+	int error;
 
 	/*
 	 * Check the security policy (SP) for the packet and, if required,
@@ -632,9 +632,7 @@ ipsec4_output(struct mbuf *m, struct inp
 	if (ipsec_outdone(m)) {
 		return 0;
 	}
-	s = splsoftnet();
 	if (inp && ipsec_pcb_skip_ipsec(inp->inp_sp, IPSEC_DIR_OUTBOUND)) {
-		splx(s);
 		return 0;
 	}
 	sp = ipsec_checkpolicy(m, IPSEC_DIR_OUTBOUND, flags, &error, inp);
@@ -647,7 +645,6 @@ ipsec4_output(struct mbuf *m, struct inp
 	 *	sp == NULL, error != 0        discard packet, report error
 	 */
 	if (sp == NULL) {
-		splx(s);
 		if (error) {
 			/*
 			 * Hack: -EINVAL is used to signal that a packet
@@ -684,7 +681,6 @@ ipsec4_output(struct mbuf *m, struct inp
 		*mtu = _mtu;
 		*natt_frag = true;
 		KEY_SP_UNREF(&sp);
-		splx(s);
 		return 0;
 	}
 
@@ -698,7 +694,6 @@ ipsec4_output(struct mbuf *m, struct inp
 	if (error == ENOENT)
 		error = 0;
 	KEY_SP_UNREF(&sp);
-	splx(s);
 	*done = true;
 	return error;
 }
@@ -707,11 +702,9 @@ int
 ipsec_ip_input_checkpolicy(struct mbuf *m, bool forward)
 {
 	struct secpolicy *sp;
-	int error, s;
+	int error;
 
-	s = splsoftnet();
 	error = ipsec_in_reject(m, NULL);
-	splx(s);
 	if (error) {
 		return EINVAL;
 	}
@@ -724,14 +717,12 @@ ipsec_ip_input_checkpolicy(struct mbuf *
 	 * Peek at the outbound SP for this packet to determine if
 	 * it is a Fast Forward candidate.
 	 */
-	s = splsoftnet();
 	sp = ipsec_checkpolicy(m, IPSEC_DIR_OUTBOUND, IP_FORWARDING,
 	    &error, NULL);
 	if (sp != NULL) {
 		m->m_flags &= ~M_CANFASTFWD;
 		KEY_SP_UNREF(&sp);
 	}
-	splx(s);
 
 	return 0;
 }
@@ -1801,20 +1792,16 @@ ipsec6_check_policy(struct mbuf *m, stru
     int *needipsecp, int *errorp)
 {
 	struct secpolicy *sp = NULL;
-	int s;
 	int error = 0;
 	int needipsec = 0;
 
 	if (ipsec_outdone(m)) {
 		goto skippolicycheck;
 	}
-	s = splsoftnet();
 	if (inp && ipsec_pcb_skip_ipsec(inp->inp_sp, IPSEC_DIR_OUTBOUND)) {
-		splx(s);
 		goto skippolicycheck;
 	}
 	sp = ipsec_checkpolicy(m, IPSEC_DIR_OUTBOUND, flags, &error, inp);
-	splx(s);
 
 	/*
 	 * There are four return cases:

Index: src/sys/netipsec/ipsec_input.c
diff -u src/sys/netipsec/ipsec_input.c:1.78 src/sys/netipsec/ipsec_input.c:1.78.4.1
--- src/sys/netipsec/ipsec_input.c:1.78	Tue Aug 23 09:25:10 2022
+++ src/sys/netipsec/ipsec_input.c	Sat Jul 20 14:34:24 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipsec_input.c,v 1.78 2022/08/23 09:25:10 knakahara Exp $	*/
+/*	$NetBSD: ipsec_input.c,v 1.78.4.1 2024/07/20 14:34:24 martin Exp $	*/
 /*	$FreeBSD: ipsec_input.c,v 1.2.4.2 2003/03/28 20:32:53 sam Exp $	*/
 /*	$OpenBSD: ipsec_input.c,v 1.63 2003/02/20 18:35:43 deraadt Exp $	*/
 
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ipsec_input.c,v 1.78 2022/08/23 09:25:10 knakahara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec_input.c,v 1.78.4.1 2024/07/20 14:34:24 martin Exp $");
 
 /*
  * IPsec input processing.
@@ -220,7 +220,7 @@ ipsec_common_input(struct mbuf *m, int s
 	u_int32_t spi;
 	u_int16_t sport;
 	u_int16_t dport;
-	int s, error;
+	int error;
 
 	IPSEC_ISTAT(sproto, ESP_STAT_INPUT, AH_STAT_INPUT,
 		IPCOMP_STAT_INPUT);
@@ -296,8 +296,6 @@ ipsec_common_input(struct mbuf *m, int s
 		return EPFNOSUPPORT;
 	}
 
-	s = splsoftnet();
-
 	/* NB: only pass dst since key_lookup_sa follows RFC2401 */
 	sav = KEY_LOOKUP_SA(&dst_address, sproto, spi, sport, dport);
 	if (sav == NULL) {
@@ -332,7 +330,6 @@ ipsec_common_input(struct mbuf *m, int s
 		}
 		IPSEC_ISTAT(sproto, ESP_STAT_NOTDB, AH_STAT_NOTDB,
 		    IPCOMP_STAT_NOTDB);
-		splx(s);
 		m_freem(m);
 		return ENOENT;
 	}
@@ -345,7 +342,6 @@ ipsec_common_input(struct mbuf *m, int s
 	 */
 	error = (*sav->tdb_xform->xf_input)(m, sav, skip, protoff);
 	KEY_SA_UNREF(&sav);
-	splx(s);
 	return error;
 }
 

Index: src/sys/netipsec/ipsec_output.c
diff -u src/sys/netipsec/ipsec_output.c:1.85 src/sys/netipsec/ipsec_output.c:1.85.4.1
--- src/sys/netipsec/ipsec_output.c:1.85	Sun Apr 10 09:50:46 2022
+++ src/sys/netipsec/ipsec_output.c	Sat Jul 20 14:34:24 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipsec_output.c,v 1.85 2022/04/10 09:50:46 andvar Exp $	*/
+/*	$NetBSD: ipsec_output.c,v 1.85.4.1 2024/07/20 14:34:24 martin Exp $	*/
 
 /*
  * Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ipsec_output.c,v 1.85 2022/04/10 09:50:46 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec_output.c,v 1.85.4.1 2024/07/20 14:34:24 martin Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_inet.h"
@@ -488,7 +488,7 @@ ipsec4_process_packet(struct mbuf *m, co
 {
 	struct secasvar *sav = NULL;
 	struct ip *ip;
-	int s, error, i, off;
+	int error, i, off;
 	union sockaddr_union *dst;
 	int setdf;
 
@@ -496,8 +496,6 @@ ipsec4_process_packet(struct mbuf *m, co
 	KASSERT(m->m_nextpkt == NULL);
 	KASSERT(isr != NULL);
 
-	s = splsoftnet();	/* insure SA contents don't change */
-
 	isr = ipsec_nextisr(m, isr, AF_INET, &error, &sav);
 	if (isr == NULL) {
 		if (error != 0) {
@@ -506,7 +504,6 @@ ipsec4_process_packet(struct mbuf *m, co
 			if (ipsec_register_done(m, &error) < 0)
 				goto bad;
 
-			splx(s);
 			return ipsec_reinject_ipstack(m, AF_INET, 0);
 		}
 	}
@@ -531,7 +528,6 @@ ipsec4_process_packet(struct mbuf *m, co
 			goto noneed;
 		*mtu = sav->esp_frag;
 		KEY_SA_UNREF(&sav);
-		splx(s);
 		return 0;
 	}
 noneed:
@@ -633,13 +629,11 @@ noneed:
 		error = ipsec_process_done(m, isr, sav, 0);
 	}
 	KEY_SA_UNREF(&sav);
-	splx(s);
 	return error;
 
 unrefsav:
 	KEY_SA_UNREF(&sav);
 bad:
-	splx(s);
 	if (m)
 		m_freem(m);
 	return error;
@@ -738,15 +732,13 @@ ipsec6_process_packet(struct mbuf *m, co
 {
 	struct secasvar *sav = NULL;
 	struct ip6_hdr *ip6;
-	int s, error, i, off;
+	int error, i, off;
 	union sockaddr_union *dst;
 
 	KASSERT(m != NULL);
 	KASSERT(m->m_nextpkt == NULL);
 	KASSERT(isr != NULL);
 
-	s = splsoftnet();   /* insure SA contents don't change */
-
 	isr = ipsec_nextisr(m, isr, AF_INET6, &error, &sav);
 	if (isr == NULL) {
 		if (error != 0) {
@@ -756,7 +748,6 @@ ipsec6_process_packet(struct mbuf *m, co
 			if (ipsec_register_done(m, &error) < 0)
 				goto bad;
 
-			splx(s);
 			return ipsec_reinject_ipstack(m, AF_INET6, flags);
 		}
 	}
@@ -823,13 +814,11 @@ ipsec6_process_packet(struct mbuf *m, co
 	}
 	error = (*sav->tdb_xform->xf_output)(m, isr, sav, i, off, flags);
 	KEY_SA_UNREF(&sav);
-	splx(s);
 	return error;
 
 unrefsav:
 	KEY_SA_UNREF(&sav);
 bad:
-	splx(s);
 	if (m)
 		m_freem(m);
 	return error;

Reply via email to