Am 11.02.2013 17:01, schrieb Stefan Hajnoczi: > The incoming migration is processed in a coroutine and uses an fd read > handler to enter the yielded coroutine when data becomes available. > > The read handler was set too broadly, so that spurious coroutine entries > were be triggered if other coroutine users yielded (like the block > layer's bdrv_write() function). > > Install the fd read only only when yielding for more data to become > available. This prevents spurious coroutine entries which break code > that assumes only a specific set of places can re-enter the coroutine. > > This patch fixes crashes in block/raw-posix.c that are triggered with > "migrate -b" when qiov becomes a dangling pointer due to a spurious > coroutine entry that frees qiov early. > > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > --- > Note: this patch replaces "[PATCH for-1.4 stable] block: handle spurious > coroutine entries". It's an alternative fix that I hope Kevin will like more.
Yes, this looks much better to me. Kevin