Message ID | 20170918202529.28379-1-el13635@mail.ntua.gr (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 09/18/2017 03:25 PM, Manos Pitsidianakis wrote: > 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 s/halve/half/ > throttle_group_restart_queue returns. > > Signed-off-by: Manos Pitsidianakis <el13635@mail.ntua.gr> > --- > block/throttle-groups.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > Reviewed-by: Eric Blake <eblake@redhat.com>
Am 18.09.2017 um 22:25 hat Manos Pitsidianakis geschrieben: > 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. Cc: qemu-stable@nongnu.org (It should be mentioned explicitly in the commit message so you can filter for it in the commit history. I routinely add this while applying patches if I'm aware of the qemu-stable CC, but it makes my life easier if it's already there.) > Signed-off-by: Manos Pitsidianakis <el13635@mail.ntua.gr> Thanks, applied to the block branch. Kevin
On Mon 18 Sep 2017 10:25:29 PM CEST, Manos Pitsidianakis wrote: > 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 <el13635@mail.ntua.gr> Reviewed-by: Alberto Garcia <berto@igalia.com> Berto
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 <el13635@mail.ntua.gr> 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 > >
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); }
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 <el13635@mail.ntua.gr> --- block/throttle-groups.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)