[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 6/6] blkdebug: Use QLIST_FOREACH_SAFE to resume IO
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PULL 6/6] blkdebug: Use QLIST_FOREACH_SAFE to resume IO |
Date: |
Fri, 13 Dec 2013 18:49:03 +0100 |
From: Fam Zheng <address@hidden>
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>
Signed-off-by: Kevin Wolf <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.1.4
- [Qemu-devel] [PULL 0/6] Block patches, Kevin Wolf, 2013/12/13
- [Qemu-devel] [PULL 1/6] sheepdog: check if '-o redundancy' is passed from user, Kevin Wolf, 2013/12/13
- [Qemu-devel] [PULL 3/6] block/vvfat: Fix compiler warnings for OpenBSD, Kevin Wolf, 2013/12/13
- [Qemu-devel] [PULL 4/6] block: expect get_block_status errors in bdrv_make_zero, Kevin Wolf, 2013/12/13
- [Qemu-devel] [PULL 2/6] qapi-schema.json: Change 1.8 reference to 2.0, Kevin Wolf, 2013/12/13
- [Qemu-devel] [PULL 5/6] qemu-img: make progress output more accurate during convert, Kevin Wolf, 2013/12/13
- [Qemu-devel] [PULL 6/6] blkdebug: Use QLIST_FOREACH_SAFE to resume IO,
Kevin Wolf <=