epoch: allow for conditionally asserting that the epoch context fields

are unused by zeroing on INVARIANTS builds
This commit is contained in:
Matt Macy 2018-05-23 17:00:05 +00:00
parent 3ae6b51919
commit 246a619924
5 changed files with 12 additions and 4 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -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)
{