Module Name:    src
Committed By:   yamt
Date:           Thu Apr 14 15:53:36 UTC 2011

Modified Files:
        src/sys/netinet: in_offload.c ip_output.c

Log Message:
after ip_input.c rev.1.285 and 1.286, restore kernel_lock for if_output.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/netinet/in_offload.c
cvs rdiff -u -r1.207 -r1.208 src/sys/netinet/ip_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/netinet/in_offload.c
diff -u src/sys/netinet/in_offload.c:1.3 src/sys/netinet/in_offload.c:1.4
--- src/sys/netinet/in_offload.c:1.3	Sat Dec 11 22:37:46 2010
+++ src/sys/netinet/in_offload.c	Thu Apr 14 15:53:36 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: in_offload.c,v 1.3 2010/12/11 22:37:46 matt Exp $	*/
+/*	$NetBSD: in_offload.c,v 1.4 2011/04/14 15:53:36 yamt Exp $	*/
 
 /*-
  * Copyright (c)2005, 2006 YAMAMOTO Takashi,
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in_offload.c,v 1.3 2010/12/11 22:37:46 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in_offload.c,v 1.4 2011/04/14 15:53:36 yamt Exp $");
 
 #include <sys/param.h>
 #include <sys/mbuf.h>
@@ -53,8 +53,12 @@
 {
 	struct ip_tso_output_args *args = vp;
 	struct ifnet *ifp = args->ifp;
+	int error;
 
-	return (*ifp->if_output)(ifp, m, args->sa, args->rt);
+	KERNEL_LOCK(1, NULL);
+	error = (*ifp->if_output)(ifp, m, args->sa, args->rt);
+	KERNEL_UNLOCK_ONE(NULL);
+	return error;
 }
 
 int

Index: src/sys/netinet/ip_output.c
diff -u src/sys/netinet/ip_output.c:1.207 src/sys/netinet/ip_output.c:1.208
--- src/sys/netinet/ip_output.c:1.207	Sat Apr  9 21:00:53 2011
+++ src/sys/netinet/ip_output.c	Thu Apr 14 15:53:36 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: ip_output.c,v 1.207 2011/04/09 21:00:53 martin Exp $	*/
+/*	$NetBSD: ip_output.c,v 1.208 2011/04/14 15:53:36 yamt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -91,7 +91,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.207 2011/04/09 21:00:53 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.208 2011/04/14 15:53:36 yamt Exp $");
 
 #include "opt_pfil_hooks.h"
 #include "opt_inet.h"
@@ -826,11 +826,13 @@
 		if (__predict_true(
 		    (m->m_pkthdr.csum_flags & M_CSUM_TSOv4) == 0 ||
 		    (ifp->if_capenable & IFCAP_TSOv4) != 0)) {
+			KERNEL_LOCK(1, NULL);
 			error =
 			    (*ifp->if_output)(ifp, m,
 				(m->m_flags & M_MCAST) ?
 				    sintocsa(rdst) : sintocsa(dst),
 				rt);
+			KERNEL_UNLOCK_ONE(NULL);
 		} else {
 			error =
 			    ip_tso_output(ifp, m,
@@ -902,10 +904,12 @@
 			{
 				KASSERT((m->m_pkthdr.csum_flags &
 				    (M_CSUM_UDPv4 | M_CSUM_TCPv4)) == 0);
+				KERNEL_LOCK(1, NULL);
 				error = (*ifp->if_output)(ifp, m,
 				    (m->m_flags & M_MCAST) ?
 					sintocsa(rdst) : sintocsa(dst),
 				    rt);
+				KERNEL_UNLOCK_ONE(NULL);
 			}
 		} else
 			m_freem(m);

Reply via email to