summaryrefslogtreecommitdiffstats
path: root/sys/geom/geom_event.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2004-02-02 10:58:07 +0000
committerphk <phk@FreeBSD.org>2004-02-02 10:58:07 +0000
commit98a9a50f22bd1993a8a5f3a50c595d34af69280b (patch)
treeb9aa835ed496cc33821deec113d41ab0feb05508 /sys/geom/geom_event.c
parent1acc8f3c8a72f84e32bec459571a9985b50c138c (diff)
downloadFreeBSD-src-98a9a50f22bd1993a8a5f3a50c595d34af69280b.zip
FreeBSD-src-98a9a50f22bd1993a8a5f3a50c595d34af69280b.tar.gz
Don't mingle malloc/g_event flags.
Spotted by: pjd@
Diffstat (limited to 'sys/geom/geom_event.c')
-rw-r--r--sys/geom/geom_event.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/geom/geom_event.c b/sys/geom/geom_event.c
index 4b9509a..3a93e94 100644
--- a/sys/geom/geom_event.c
+++ b/sys/geom/geom_event.c
@@ -252,17 +252,20 @@ g_cancel_event(void *ref)
}
static int
-g_post_event_x(g_event_t *func, void *arg, int flag, struct g_event **epp, va_list ap)
+g_post_event_x(g_event_t *func, void *arg, int flag, int wuflag, struct g_event **epp, va_list ap)
{
struct g_event *ep;
void *p;
u_int n;
- g_trace(G_T_TOPOLOGY, "g_post_event_x(%p, %p, %d)", func, arg, flag);
+ g_trace(G_T_TOPOLOGY, "g_post_event_x(%p, %p, %d, %d)",
+ func, arg, flag, wakeup);
+ KASSERT(wuflag == 0 || wuflag == EV_WAKEUP,
+ ("Wrong wuflag in g_post_event_x(0x%x)", wuflag));
ep = g_malloc(sizeof *ep, flag | M_ZERO);
if (ep == NULL)
return (ENOMEM);
- ep->flag = flag;
+ ep->flag = wuflag;
for (n = 0; n < G_N_EVENTREFS; n++) {
p = va_arg(ap, void *);
if (p == NULL)
@@ -292,7 +295,7 @@ g_post_event(g_event_t *func, void *arg, int flag, ...)
KASSERT(flag == M_WAITOK || flag == M_NOWAIT,
("Wrong flag to g_post_event"));
va_start(ap, flag);
- i = g_post_event_x(func, arg, flag, NULL, ap);
+ i = g_post_event_x(func, arg, flag, 0, NULL, ap);
va_end(ap);
return (i);
}
@@ -316,7 +319,7 @@ g_waitfor_event(g_event_t *func, void *arg, int 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);
+ error = g_post_event_x(func, arg, flag, EV_WAKEUP, &ep, ap);
va_end(ap);
if (error)
return (error);
OpenPOWER on IntegriCloud