Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 May 2018 17:00:05 +0000 (UTC)
From:      Matt Macy <mmacy@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r334104 - in head/sys: netinet sys
Message-ID:  <201805231700.w4NH05hs047395@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mmacy
Date: Wed May 23 17:00:05 2018
New Revision: 334104
URL: https://svnweb.freebsd.org/changeset/base/334104

Log:
  epoch: allow for conditionally asserting that the epoch context fields
  are unused by zeroing on INVARIANTS builds

Modified:
  head/sys/netinet/ip_divert.c
  head/sys/netinet/raw_ip.c
  head/sys/netinet/tcp_subr.c
  head/sys/netinet/udp_usrreq.c
  head/sys/sys/epoch.h

Modified: head/sys/netinet/ip_divert.c
==============================================================================
--- head/sys/netinet/ip_divert.c	Wed May 23 16:31:46 2018	(r334103)
+++ head/sys/netinet/ip_divert.c	Wed May 23 17:00:05 2018	(r334104)
@@ -670,7 +670,7 @@ div_pcblist(SYSCTL_HANDLER_ARGS)
 	if (error)
 		return error;
 
-	il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_WAITOK|M_ZERO);
+	il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_EPOCH_CALL_WAITOK);
 	inp_list = il->il_inp_list;
 	
 	INP_INFO_RLOCK(&V_divcbinfo);

Modified: head/sys/netinet/raw_ip.c
==============================================================================
--- head/sys/netinet/raw_ip.c	Wed May 23 16:31:46 2018	(r334103)
+++ head/sys/netinet/raw_ip.c	Wed May 23 17:00:05 2018	(r334104)
@@ -1056,7 +1056,7 @@ rip_pcblist(SYSCTL_HANDLER_ARGS)
 	if (error)
 		return (error);
 
-	il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_WAITOK|M_ZERO);
+	il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_EPOCH_CALL_WAITOK);
 	inp_list = il->il_inp_list;
 
 	INP_INFO_RLOCK(&V_ripcbinfo);

Modified: head/sys/netinet/tcp_subr.c
==============================================================================
--- head/sys/netinet/tcp_subr.c	Wed May 23 16:31:46 2018	(r334103)
+++ head/sys/netinet/tcp_subr.c	Wed May 23 17:00:05 2018	(r334104)
@@ -2151,7 +2151,7 @@ tcp_pcblist(SYSCTL_HANDLER_ARGS)
 	if (error)
 		return (error);
 
-	il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_WAITOK|M_ZERO);
+	il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_EPOCH_CALL_WAITOK);
 	inp_list = il->il_inp_list;
 
 	INP_INFO_WLOCK(&V_tcbinfo);

Modified: head/sys/netinet/udp_usrreq.c
==============================================================================
--- head/sys/netinet/udp_usrreq.c	Wed May 23 16:31:46 2018	(r334103)
+++ head/sys/netinet/udp_usrreq.c	Wed May 23 17:00:05 2018	(r334104)
@@ -874,7 +874,7 @@ udp_pcblist(SYSCTL_HANDLER_ARGS)
 	error = SYSCTL_OUT(req, &xig, sizeof xig);
 	if (error)
 		return (error);
-	il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_WAITOK|M_ZERO);
+	il = malloc(sizeof(struct in_pcblist) + n * sizeof(struct inpcb *), M_TEMP, M_EPOCH_CALL_WAITOK);
 	inp_list = il->il_inp_list;
 
 	INP_INFO_RLOCK(&V_udbinfo);

Modified: head/sys/sys/epoch.h
==============================================================================
--- head/sys/sys/epoch.h	Wed May 23 16:31:46 2018	(r334103)
+++ head/sys/sys/epoch.h	Wed May 23 17:00:05 2018	(r334104)
@@ -64,6 +64,14 @@ int in_epoch(void);
 DPCPU_DECLARE(int, epoch_cb_count);
 DPCPU_DECLARE(struct grouptask, epoch_cb_task);
 
+#ifdef INVARIANTS
+#define M_EPOCH_CALL_NOWAIT		(M_NOWAIT|M_ZERO)
+#define M_EPOCH_CALL_WAITOK		(M_WAITOK|M_ZERO)
+#else
+#define M_EPOCH_CALL_NOWAIT		M_NOWAIT
+#define M_EPOCH_CALL_WAITOK		M_WAITOK
+#endif
+
 static __inline void
 epoch_enter_preempt(epoch_t epoch)
 {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201805231700.w4NH05hs047395>