-
Kevin Wolf authored
The .drained_begin/end callbacks can (directly or indirectly via aio_poll()) cause block nodes to be removed or the current BdrvChild to point to a different child node. Use QLIST_FOREACH_SAFE() to make sure we don't access invalid BlockDriverStates or accidentally continue iterating the parents of the new child node instead of the node we actually came from. Signed-off-by:
Kevin Wolf <kwolf@redhat.com>
Tested-by:
Jeff Cody <jcody@redhat.com>
Reviewed-by:
Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by:
Jeff Cody <jcody@redhat.com>
Reviewed-by:
Alberto Garcia <berto@igalia.com>
Reviewed-by:
Fam Zheng <famz@redhat.com>
Signed-off-by:
Kevin Wolf <kwolf@redhat.com>Kevin Wolf authoredThe .drained_begin/end callbacks can (directly or indirectly via aio_poll()) cause block nodes to be removed or the current BdrvChild to point to a different child node. Use QLIST_FOREACH_SAFE() to make sure we don't access invalid BlockDriverStates or accidentally continue iterating the parents of the new child node instead of the node we actually came from. Signed-off-by:
Kevin Wolf <kwolf@redhat.com>
Tested-by:
Jeff Cody <jcody@redhat.com>
Reviewed-by:
Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by:
Jeff Cody <jcody@redhat.com>
Reviewed-by:
Alberto Garcia <berto@igalia.com>
Reviewed-by:
Fam Zheng <famz@redhat.com>
Signed-off-by:
Kevin Wolf <kwolf@redhat.com>
Loading