[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] blkdebug: Use QLIST_FOREACH_SAFE to resume IO
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH] blkdebug: Use QLIST_FOREACH_SAFE to resume IO |
Date: |
Fri, 13 Dec 2013 17:13:01 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
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 <address@hidden>
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