aboutsummaryrefslogtreecommitdiff
path: root/sys/geom/geom_event.c
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>2004-02-02 10:58:07 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>2004-02-02 10:58:07 +0000
commit793ffa8e55f9def6327c6afde2482b83a55f8740 (patch)
treeb9aa835ed496cc33821deec113d41ab0feb05508 /sys/geom/geom_event.c
parentfe5efaede8c7ba54306fd428cf0d0287f46cf905 (diff)
downloadsrc-793ffa8e55f9def6327c6afde2482b83a55f8740.tar.gz
src-793ffa8e55f9def6327c6afde2482b83a55f8740.zip
Don't mingle malloc/g_event flags.
Spotted by: pjd@
Notes
Notes: svn path=/head/; revision=125318
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 4b9509a11a83..3a93e94e382b 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);