• Stefan Hajnoczi's avatar
    migration: restrict scope of incoming fd read handler · d7cd3694
    Stefan Hajnoczi authored
    
    
    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: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Message-id: 1360598505-5512-1-git-send-email-stefanha@redhat.com
    Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
    d7cd3694
savevm.c 59.4 KB