Author: royger Date: Thu May 24 10:17:03 2018 New Revision: 334141 URL: https://svnweb.freebsd.org/changeset/base/334141
Log: xenstore: don't wait with the PCATCH flag Due to the current synchronous xenstore implementation in FreeBSD, we cannot return from xs_read_reply without reading a reply, or else the ring gets out of sync and the next request will read the previous reply and crash due to the type mismatch. A proper solution involves making use of the req_id field in the message and allowing multiple in-flight messages at the same time on the ring. Remove the PCATCH flag so that signals don't interrupt the wait. Tested by: Nathan Friess <[email protected]> Sponsored by: Citrix Systems R&D Modified: head/sys/dev/xen/xenstore/xenstore.c Modified: head/sys/dev/xen/xenstore/xenstore.c ============================================================================== --- head/sys/dev/xen/xenstore/xenstore.c Thu May 24 10:16:11 2018 (r334140) +++ head/sys/dev/xen/xenstore/xenstore.c Thu May 24 10:17:03 2018 (r334141) @@ -742,8 +742,8 @@ xs_read_reply(enum xsd_sockmsg_type *type, u_int *len, mtx_lock(&xs.reply_lock); while (TAILQ_EMPTY(&xs.reply_list)) { - error = mtx_sleep(&xs.reply_list, &xs.reply_lock, - PCATCH, "xswait", hz/10); + error = mtx_sleep(&xs.reply_list, &xs.reply_lock, 0, "xswait", + hz/10); if (error && error != EWOULDBLOCK) { mtx_unlock(&xs.reply_lock); return (error); _______________________________________________ [email protected] mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "[email protected]"
