[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] block/throttle-groups.c: allocate RestartData o
From: |
Michael Roth |
Subject: |
Re: [Qemu-devel] [PATCH] block/throttle-groups.c: allocate RestartData on the heap |
Date: |
Mon, 25 Sep 2017 15:51:30 -0500 |
User-agent: |
alot/0.6 |
Quoting Manos Pitsidianakis (2017-09-18 15:25:29)
> 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 halve and runs after
> throttle_group_restart_queue returns.
>
> Signed-off-by: Manos Pitsidianakis <address@hidden>
FYI: this patch has been tagged for stable 2.10.1, but is not yet
upstream. Patch freeze for 2.10.1 is September 27th.
> ---
> 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 6ba992c8d7..b291a88481 100644
> --- a/block/throttle-groups.c
> +++ b/block/throttle-groups.c
> @@ -403,17 +403,19 @@ static void coroutine_fn
> throttle_group_restart_queue_entry(void *opaque)
> schedule_next_request(tgm, is_write);
> qemu_mutex_unlock(&tg->lock);
> }
> +
> + g_free(data);
> }
>
> static void throttle_group_restart_queue(ThrottleGroupMember *tgm, bool
> is_write)
> {
> Coroutine *co;
> - RestartData rd = {
> - .tgm = tgm,
> - .is_write = is_write
> - };
> + RestartData *rd = g_new0(RestartData, 1);
>
> - co = qemu_coroutine_create(throttle_group_restart_queue_entry, &rd);
> + rd->tgm = tgm;
> + rd->is_write = is_write;
> +
> + co = qemu_coroutine_create(throttle_group_restart_queue_entry, rd);
> aio_co_enter(tgm->aio_context, co);
> }
>
> --
> 2.11.0
>
>