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)
 {
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to