Am 13.12.2013 um 08:25 hat Fam Zheng geschrieben: > Qemu-iotest 030 was broken. > > When the coroutine runs and finishes, it will remove itself from the req > list, so let's use safe version of foreach to avoid use after free. > > Signed-off-by: Fam Zheng <f...@redhat.com>
Thanks, applied to the block branch. > diff --git a/block/blkdebug.c b/block/blkdebug.c > index 37cf028..957be2c 100644 > --- a/block/blkdebug.c > +++ b/block/blkdebug.c > @@ -594,9 +594,9 @@ static int blkdebug_debug_breakpoint(BlockDriverState > *bs, const char *event, > static int blkdebug_debug_resume(BlockDriverState *bs, const char *tag) > { > BDRVBlkdebugState *s = bs->opaque; > - BlkdebugSuspendedReq *r; > + BlkdebugSuspendedReq *r, *next; > > - QLIST_FOREACH(r, &s->suspended_reqs, next) { > + QLIST_FOREACH_SAFE(r, &s->suspended_reqs, next, next) { > if (!strcmp(r->tag, tag)) { > qemu_coroutine_enter(r->co, NULL); > return 0; This hunk wasn't strictly necessary because of the return 0, but it doesn't hurt either. Kevin