[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [qemu-xen master] block/throttle-groups.c: allocate RestartData on the heap



commit 7496699ba63b8690fbd38b232ee41da25fc9d8d7
Author:     Manos Pitsidianakis <el13635@xxxxxxxxxxxx>
AuthorDate: Mon Sep 18 23:25:29 2017 +0300
Commit:     Michael Roth <mdroth@xxxxxxxxxxxxxxxxxx>
CommitDate: Thu Sep 28 16:49:39 2017 -0500

    block/throttle-groups.c: allocate RestartData on the heap
    
    RestartData is the opaque data of the throttle_group_restart_queue_entry
    coroutine. By being stack allocated, it isn't available anymore if
    aio_co_enter schedules the coroutine with a bottom half and runs after
    throttle_group_restart_queue returns.
    
    Cc: qemu-stable@xxxxxxxxxx
    Signed-off-by: Manos Pitsidianakis <el13635@xxxxxxxxxxxx>
    Reviewed-by: Eric Blake <eblake@xxxxxxxxxx>
    Reviewed-by: Alberto Garcia <berto@xxxxxxxxxx>
    Signed-off-by: Kevin Wolf <kwolf@xxxxxxxxxx>
    (cherry picked from commit 43a5dc02fd6070827d5c4ff652b885219fa8cbe1)
     Conflicts:
        block/throttle-groups.c
    * reworked to avoid functional dep on 022cdc9, since that involves
      refactoring for a feature not present in 2.10
    Signed-off-by: Michael Roth <mdroth@xxxxxxxxxxxxxxxxxx>
---
 block/throttle-groups.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/block/throttle-groups.c b/block/throttle-groups.c
index 890bfde..8f5b445 100644
--- a/block/throttle-groups.c
+++ b/block/throttle-groups.c
@@ -392,17 +392,19 @@ static void coroutine_fn 
throttle_group_restart_queue_entry(void *opaque)
         schedule_next_request(blk, is_write);
         qemu_mutex_unlock(&tg->lock);
     }
+
+    g_free(data);
 }
 
 static void throttle_group_restart_queue(BlockBackend *blk, bool is_write)
 {
     Coroutine *co;
-    RestartData rd = {
-        .blk = blk,
-        .is_write = is_write
-    };
+    RestartData *rd = g_new0(RestartData, 1);
+
+    rd->blk = blk;
+    rd->is_write = is_write;
 
-    co = qemu_coroutine_create(throttle_group_restart_queue_entry, &rd);
+    co = qemu_coroutine_create(throttle_group_restart_queue_entry, rd);
     aio_co_enter(blk_get_aio_context(blk), co);
 }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#master

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.