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);