diff --git a/sys/geom/geom_ctl.c b/sys/geom/geom_ctl.c index c11307627f70..0d6edfd1c886 100644 --- a/sys/geom/geom_ctl.c +++ b/sys/geom/geom_ctl.c @@ -102,6 +102,7 @@ gctl_error(struct gctl_req *req, const char *fmt, ...) va_start(ap, fmt); sbuf_vprintf(req->serror, fmt, ap); + va_end(ap); sbuf_finish(req->serror); if (g_debugflags & G_F_CTLDUMP) printf("gctl %p error \"%s\"\n", req, sbuf_data(req->serror)); diff --git a/sys/geom/geom_dump.c b/sys/geom/geom_dump.c index c56a25df5013..a21a6bc3c488 100644 --- a/sys/geom/geom_dump.c +++ b/sys/geom/geom_dump.c @@ -270,6 +270,7 @@ g_trace(int level, const char *fmt, ...) return; va_start(ap, fmt); vprintf(fmt, ap); + va_end(ap); printf("\n"); } diff --git a/sys/geom/geom_event.c b/sys/geom/geom_event.c index cf5974946aba..12092e479021 100644 --- a/sys/geom/geom_event.c +++ b/sys/geom/geom_event.c @@ -255,7 +255,6 @@ g_post_event_x(g_event_t *func, void *arg, int flag, struct g_event **epp, va_li g_trace(G_T_TOPOLOGY, " ref %p", p); ep->ref[n++] = p; } - va_end(ap); KASSERT(p == NULL, ("Too many references to event")); ep->func = func; ep->arg = arg; @@ -273,11 +272,14 @@ int g_post_event(g_event_t *func, void *arg, int flag, ...) { va_list ap; + int i; - va_start(ap, flag); KASSERT(flag == M_WAITOK || flag == M_NOWAIT, ("Wrong flag to g_post_event")); - return (g_post_event_x(func, arg, flag, NULL, ap)); + va_start(ap, flag); + i = g_post_event_x(func, arg, flag, NULL, ap); + va_end(ap); + return (i); } @@ -296,10 +298,11 @@ g_waitfor_event(g_event_t *func, void *arg, int flag, ...) int error; /* g_topology_assert_not(); */ - va_start(ap, flag); KASSERT(flag == M_WAITOK || flag == M_NOWAIT, ("Wrong flag to g_post_event")); + va_start(ap, flag); error = g_post_event_x(func, arg, flag | EV_WAKEUP, &ep, ap); + va_end(ap); if (error) return (error); do diff --git a/sys/geom/geom_slice.c b/sys/geom/geom_slice.c index 3b9db4ece95e..9342f119513f 100644 --- a/sys/geom/geom_slice.c +++ b/sys/geom/geom_slice.c @@ -344,9 +344,10 @@ g_slice_config(struct g_geom *gp, u_int idx, int how, off_t offset, off_t length pp->mediasize = gsl->length; return (0); } - va_start(ap, fmt); sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); + va_start(ap, fmt); sbuf_vprintf(sb, fmt, ap); + va_end(ap); sbuf_finish(sb); pp = g_new_providerf(gp, sbuf_data(sb)); pp2 = LIST_FIRST(&gp->consumer)->provider; diff --git a/sys/geom/geom_subr.c b/sys/geom/geom_subr.c index 84978c989a5a..ec35f9e956e0 100644 --- a/sys/geom/geom_subr.c +++ b/sys/geom/geom_subr.c @@ -203,9 +203,10 @@ g_new_geomf(struct g_class *mp, const char *fmt, ...) struct sbuf *sb; g_topology_assert(); - va_start(ap, fmt); sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); + va_start(ap, fmt); sbuf_vprintf(sb, fmt, ap); + va_end(ap); sbuf_finish(sb); gp = g_malloc(sizeof *gp, M_WAITOK | M_ZERO); gp->protect = 0x020016601; @@ -354,9 +355,10 @@ g_new_providerf(struct g_geom *gp, const char *fmt, ...) va_list ap; g_topology_assert(); - va_start(ap, fmt); sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); + va_start(ap, fmt); sbuf_vprintf(sb, fmt, ap); + va_end(ap); sbuf_finish(sb); pp = g_malloc(sizeof *pp + sbuf_len(sb) + 1, M_WAITOK | M_ZERO); pp->protect = 0x020016603;