| Submitter | Avi Kivity |
|---|---|
| Date | May 16, 2010, 11:59 a.m. |
| Message ID | <1274011197-26196-1-git-send-email-avi@redhat.com> |
| Download | mbox | patch |
| Permalink | /patch/52743/ |
| State | New |
| Headers | show |
Comments
On Sun, May 16, 2010 at 02:59:57PM +0300, Avi Kivity wrote: > Not all block format drivers expose an io_flush method (reasonable for > read-only protocols), so calling io_flush there will immediately segfault. > > Fix by checking for the method's existence before calling it. Looks good, Reviewed-by: Christoph Hellwig <hch@lst.de>
Am 16.05.2010 13:59, schrieb Avi Kivity: > Not all block format drivers expose an io_flush method (reasonable for > read-only protocols), so calling io_flush there will immediately segfault. > > Fix by checking for the method's existence before calling it. > > Signed-off-by: Avi Kivity <avi@redhat.com> Thanks, applied to the block branch. Kevin
Patch
diff --git a/aio.c b/aio.c index f164a47..2f08655 100644 --- a/aio.c +++ b/aio.c @@ -113,7 +113,9 @@ void qemu_aio_flush(void) qemu_aio_wait(); QLIST_FOREACH(node, &aio_handlers, node) { - ret |= node->io_flush(node->opaque); + if (node->io_flush) { + ret |= node->io_flush(node->opaque); + } } } while (qemu_bh_poll() || ret > 0); }
Not all block format drivers expose an io_flush method (reasonable for read-only protocols), so calling io_flush there will immediately segfault. Fix by checking for the method's existence before calling it. Signed-off-by: Avi Kivity <avi@redhat.com> --- aio.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)