diff options
| author | Adrian Chadd <adrian@FreeBSD.org> | 2009-05-28 04:03:16 +0000 |
|---|---|---|
| committer | Adrian Chadd <adrian@FreeBSD.org> | 2009-05-28 04:03:16 +0000 |
| commit | 1fc05890aea4531420daaa8b408b40b9cd4b2a7d (patch) | |
| tree | 2c057a76d5a5f0158ed5317eda4617337295a328 /sys/xen | |
| parent | cc79e34966fbc64eb03827775f39b432d775c24d (diff) | |
Notes
Diffstat (limited to 'sys/xen')
| -rw-r--r-- | sys/xen/xenbus/xenbus_xs.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/sys/xen/xenbus/xenbus_xs.c b/sys/xen/xenbus/xenbus_xs.c index 806955678457..93122553e0cf 100644 --- a/sys/xen/xenbus/xenbus_xs.c +++ b/sys/xen/xenbus/xenbus_xs.c @@ -769,10 +769,17 @@ xenwatch_thread(void *unused) mtx_unlock(&watch_events_lock); if (msg != NULL) { - msg->u.watch.handle->callback( - msg->u.watch.handle, - (const char **)msg->u.watch.vec, - msg->u.watch.vec_size); + /* + * XXX There are messages coming in with a NULL callback. + * XXX This deserves further investigation; the workaround + * XXX here simply prevents the kernel from panic'ing + * XXX on startup. + */ + if (msg->u.watch.handle->callback != NULL) + msg->u.watch.handle->callback( + msg->u.watch.handle, + (const char **)msg->u.watch.vec, + msg->u.watch.vec_size); free(msg->u.watch.vec, M_DEVBUF); free(msg, M_DEVBUF); } |
