[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v7 1/7] blkdebug: Use QLIST_FOREACH_SAFE to resume I
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PATCH v7 1/7] blkdebug: Use QLIST_FOREACH_SAFE to resume IO |
Date: |
Mon, 16 Dec 2013 14:45:27 +0800 |
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>
---
block/blkdebug.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
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;
@@ -609,7 +609,7 @@ static int
blkdebug_debug_remove_breakpoint(BlockDriverState *bs,
const char *tag)
{
BDRVBlkdebugState *s = bs->opaque;
- BlkdebugSuspendedReq *r;
+ BlkdebugSuspendedReq *r, *r_next;
BlkdebugRule *rule, *next;
int i, ret = -ENOENT;
@@ -622,7 +622,7 @@ static int
blkdebug_debug_remove_breakpoint(BlockDriverState *bs,
}
}
}
- QLIST_FOREACH(r, &s->suspended_reqs, next) {
+ QLIST_FOREACH_SAFE(r, &s->suspended_reqs, next, r_next) {
if (!strcmp(r->tag, tag)) {
qemu_coroutine_enter(r->co, NULL);
ret = 0;
--
1.8.5.1
- [Qemu-devel] [PATCH v7 0/7] block: allow commit active as top, Fam Zheng, 2013/12/16
- [Qemu-devel] [PATCH v7 1/7] blkdebug: Use QLIST_FOREACH_SAFE to resume IO,
Fam Zheng <=
- [Qemu-devel] [PATCH v7 2/7] mirror: Don't close target, Fam Zheng, 2013/12/16
- [Qemu-devel] [PATCH v7 3/7] mirror: Move base to MirrorBlockJob, Fam Zheng, 2013/12/16
- [Qemu-devel] [PATCH v7 5/7] commit: Support commit active layer, Fam Zheng, 2013/12/16
- [Qemu-devel] [PATCH v7 6/7] qemu-iotests: Update test cases for commit active, Fam Zheng, 2013/12/16
- [Qemu-devel] [PATCH v7 4/7] block: Add commit_active_start(), Fam Zheng, 2013/12/16
- [Qemu-devel] [PATCH v7 7/7] commit: Remove unused check, Fam Zheng, 2013/12/16
- Re: [Qemu-devel] [PATCH v7 0/7] block: allow commit active as top, Stefan Hajnoczi, 2013/12/20