Module Name:    src
Committed By:   roy
Date:           Thu Nov  8 04:30:38 UTC 2018

Modified Files:
        src/sys/kern: uipc_usrreq.c
        src/sys/netipsec: keysock.c

Log Message:
Don't call soroverflow when we return the error to the sender.

Thanks to thorpej@ for a sanity check.


To generate a diff of this commit:
cvs rdiff -u -r1.186 -r1.187 src/sys/kern/uipc_usrreq.c
cvs rdiff -u -r1.65 -r1.66 src/sys/netipsec/keysock.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/kern/uipc_usrreq.c
diff -u src/sys/kern/uipc_usrreq.c:1.186 src/sys/kern/uipc_usrreq.c:1.187
--- src/sys/kern/uipc_usrreq.c:1.186	Fri May 11 09:43:59 2018
+++ src/sys/kern/uipc_usrreq.c	Thu Nov  8 04:30:37 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_usrreq.c,v 1.186 2018/05/11 09:43:59 roy Exp $	*/
+/*	$NetBSD: uipc_usrreq.c,v 1.187 2018/11/08 04:30:37 roy Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000, 2004, 2008, 2009 The NetBSD Foundation, Inc.
@@ -96,7 +96,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_usrreq.c,v 1.186 2018/05/11 09:43:59 roy Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_usrreq.c,v 1.187 2018/11/08 04:30:37 roy Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -345,11 +345,13 @@ unp_output(struct mbuf *m, struct mbuf *
 		unp_dispose(control);
 		m_freem(control);
 		m_freem(m);
-		soroverflow(so2);
-		return (ENOBUFS);
+		/* Don't call soroverflow because we're returning this
+		 * error directly to the sender. */
+		so2->so_rcv.sb_overflowed++;
+		return ENOBUFS;
 	} else {
 		sorwakeup(so2);
-		return (0);
+		return 0;
 	}
 }
 

Index: src/sys/netipsec/keysock.c
diff -u src/sys/netipsec/keysock.c:1.65 src/sys/netipsec/keysock.c:1.66
--- src/sys/netipsec/keysock.c:1.65	Thu Apr 26 19:50:09 2018
+++ src/sys/netipsec/keysock.c	Thu Nov  8 04:30:38 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: keysock.c,v 1.65 2018/04/26 19:50:09 maxv Exp $	*/
+/*	$NetBSD: keysock.c,v 1.66 2018/11/08 04:30:38 roy Exp $	*/
 /*	$FreeBSD: keysock.c,v 1.3.2.1 2003/01/24 05:11:36 sam Exp $	*/
 /*	$KAME: keysock.c,v 1.25 2001/08/13 20:07:41 itojun Exp $	*/
 
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: keysock.c,v 1.65 2018/04/26 19:50:09 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: keysock.c,v 1.66 2018/11/08 04:30:38 roy Exp $");
 
 /* This code has derived from sys/net/rtsock.c on FreeBSD2.2.5 */
 
@@ -207,7 +207,9 @@ key_sendup0(
 		    __func__);
 		PFKEY_STATINC(PFKEY_STAT_IN_NOMEM);
 		m_freem(m);
-		soroverflow(rp->rcb_socket);
+		/* Don't call soroverflow because we're returning this
+		 * error directly to the sender. */
+		rp->rcb_socket->so_rcv.sb_overflowed++;
 		error = ENOBUFS;
 	} else {
 		sorwakeup(rp->rcb_socket);

Reply via email to