Skip to content

Commit

Permalink
aio: Fix qemu_aio_wait() to maintain correct walking_handlers count
Browse files Browse the repository at this point in the history
Fix qemu_aio_wait() to ensure that registered aio handlers don't get
deleted when they are still active. This is ensured by maintaning the
right count of walking_handlers.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  • Loading branch information
bonzini authored and kevmw committed Sep 28, 2012
1 parent 870f568 commit 00f7853
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions aio.c
Expand Up @@ -119,7 +119,7 @@ bool qemu_aio_wait(void)
return true;
}

walking_handlers = 1;
walking_handlers++;

FD_ZERO(&rdfds);
FD_ZERO(&wrfds);
Expand Down Expand Up @@ -147,7 +147,7 @@ bool qemu_aio_wait(void)
}
}

walking_handlers = 0;
walking_handlers--;

/* No AIO operations? Get us out of here */
if (!busy) {
Expand All @@ -159,7 +159,7 @@ bool qemu_aio_wait(void)

/* if we have any readable fds, dispatch event */
if (ret > 0) {
walking_handlers = 1;
walking_handlers++;

/* we have to walk very carefully in case
* qemu_aio_set_fd_handler is called while we're walking */
Expand Down Expand Up @@ -187,7 +187,7 @@ bool qemu_aio_wait(void)
}
}

walking_handlers = 0;
walking_handlers--;
}

return true;
Expand Down

0 comments on commit 00f7853

Please sign in to comment.