On Thu, 04/10 19:36, Max Reitz wrote: > As speed is an optional parameter for the QMP block-commit command, it > should be set to 0 if not given (as it is undefined if has_speed is > false), that is, the speed should not be limited. > > Signed-off-by: Max Reitz <mre...@redhat.com> > Reviewed-by: Eric Blake <ebl...@redhat.com> > --- > This patch was previously part of the "qemu-img: Implement commit like > QMP" series, but as this is a general bugfix, it has been separated. > ---
Reviewed-by: Fam Zheng <f...@redhat.com> The (generated) caller qmp_marshal_input_block_commit() actually leaves speed uninitialized, so we're not safe without this patch: int qmp_marshal_input_block_commit(Monitor *mon, const QDict *qdict, QObject **ret) { Error *local_err = NULL; Error **errp = &local_err; QDict *args = (QDict *)qdict; QmpInputVisitor *mi; QapiDeallocVisitor *md; Visitor *v; char * device = NULL; bool has_base = false; char * base = NULL; char * top = NULL; bool has_speed = false; int64_t speed; I'm wondering what the reason is to initialize pointers (like base and device) while leaving int64_t values uninitilized in the code generator? Fam > blockdev.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/blockdev.c b/blockdev.c > index c3422a1..5dd01ea 100644 > --- a/blockdev.c > +++ b/blockdev.c > @@ -1876,6 +1876,10 @@ void qmp_block_commit(const char *device, > */ > BlockdevOnError on_error = BLOCKDEV_ON_ERROR_REPORT; > > + if (!has_speed) { > + speed = 0; > + } > + > /* drain all i/o before commits */ > bdrv_drain_all(); > > -- > 1.9.1 > >