[Spice-commits] 4 commits - qapi-schema.json qmp-commands.hx scripts/qapi-commands.py scripts/qapi.py
Gerd Hoffmann
kraxel at kemper.freedesktop.org
Sun May 25 23:45:24 PDT 2014
qapi-schema.json | 2 +-
qmp-commands.hx | 2 +-
scripts/qapi-commands.py | 2 +-
scripts/qapi.py | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
New commits:
commit 178ac111bca16c08a79b2609ebdc75197bea976a
Merge: 6054d88 fc13d93
Author: Peter Maydell <peter.maydell at linaro.org>
Date: Thu May 22 19:04:48 2014 +0100
Merge remote-tracking branch 'remotes/qmp-unstable/queue/qmp' into staging
* remotes/qmp-unstable/queue/qmp:
qapi: zero-initialize all QMP command parameters
scripts/qapi.py: Avoid syntax not supported by Python 2.4
doc: add "setup" to list of migration states
Signed-off-by: Peter Maydell <peter.maydell at linaro.org>
commit fc13d937269c1cd01a4b7720c1dcce01722727a2
Author: Michael Roth <mdroth at linux.vnet.ibm.com>
Date: Tue May 20 12:20:39 2014 -0500
qapi: zero-initialize all QMP command parameters
In general QMP command parameter values are specified by consumers of the
QMP/HMP interface, but in the case of optional parameters these values may
be left uninitialized.
It is considered a bug for code to make use of optional parameters that have
not been flagged as being present by the marshalling code (via corresponding
has_<parameter> parameter), however our marshalling code will still pass
these uninitialized values on to the corresponding QMP function (to then
be ignored). Some compilers (clang in particular) consider this unsafe
however, and generate warnings as a result. As reported by Peter Maydell:
This is something clang's -fsanitize=undefined spotted. The
code generated by qapi-commands.py in qmp-marshal.c for
qmp_marshal_* functions where there are some optional
arguments looks like this:
bool has_force = false;
bool force;
mi = qmp_input_visitor_new_strict(QOBJECT(args));
v = qmp_input_get_visitor(mi);
visit_type_str(v, &device, "device", errp);
visit_start_optional(v, &has_force, "force", errp);
if (has_force) {
visit_type_bool(v, &force, "force", errp);
}
visit_end_optional(v, errp);
qmp_input_visitor_cleanup(mi);
if (error_is_set(errp)) {
goto out;
}
qmp_eject(device, has_force, force, errp);
In the case where has_force is false, we never initialize
force, but then we use it by passing it to qmp_eject.
I imagine we don't then actually use the value, but clang
complains in particular for 'bool' variables because the value
that ends up being loaded from memory for 'force' is not either
0 or 1 (being uninitialized stack contents).
Fix this by initializing all QMP command parameters to {0} in the
marshalling code prior to passing them on to the QMP functions.
Signed-off-by: Michael Roth <mdroth at linux.vnet.ibm.com>
Reported-by: Peter Maydell <peter.maydell at linaro.org>
Tested-by: Peter Maydell <peter.maydell at linaro.org>
Reviewed-by: Eric Blake <eblake at redhat.com>
Reviewed-by: Markus Armbruster <armbru at redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino at redhat.com>
diff --git a/scripts/qapi-commands.py b/scripts/qapi-commands.py
index 386f17e..7d93d01 100644
--- a/scripts/qapi-commands.py
+++ b/scripts/qapi-commands.py
@@ -111,7 +111,7 @@ bool has_%(argname)s = false;
argname=c_var(argname), argtype=c_type(argtype))
else:
ret += mcgen('''
-%(argtype)s %(argname)s;
+%(argtype)s %(argname)s = {0};
''',
argname=c_var(argname), argtype=c_type(argtype))
commit 347888113020e874027cb200bb38aa0852e42839
Author: Luiz Capitulino <lcapitulino at redhat.com>
Date: Tue May 20 13:50:19 2014 -0400
scripts/qapi.py: Avoid syntax not supported by Python 2.4
The Python "except Foo as x" syntax was only introduced in
Python 2.6, but we aim to support Python 2.4 and later.
Use the old-style "except Foo, x" syntax instead, thus
fixing configure/compile on systems with older Python.
Reported-by: Peter Maydell <peter.maydell at linaro.org>
Tested-by: Andreas Färber <andreas.faerber at web.de>
Signed-off-by: Luiz Capitulino <lcapitulino at redhat.com>
diff --git a/scripts/qapi.py b/scripts/qapi.py
index 0265b40..86e9608 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -116,7 +116,7 @@ class QAPISchema:
continue
try:
fobj = open(include_path, 'r')
- except IOError as e:
+ except IOError, e:
raise QAPIExprError(expr_info,
'%s: %s' % (e.strerror, include))
exprs_include = QAPISchema(fobj, include, self.include_hist,
commit 3b6959506831193f37cc830c8e111b437c0d1380
Author: Peter Feiner <peter at gridcentric.ca>
Date: Fri May 16 10:40:47 2014 -0400
doc: add "setup" to list of migration states
On a slow VM (e.g., nested), you see the "setup" state when you query the
migration status.
Signed-off-by: Peter Feiner <peter at gridcentric.ca>
Reviewed-by: Eric Blake <eblake at redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino at redhat.com>
diff --git a/qapi-schema.json b/qapi-schema.json
index 36cb964..f4ffede 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -691,7 +691,7 @@
# Information about current migration process.
#
# @status: #optional string describing the current migration status.
-# As of 0.14.0 this can be 'active', 'completed', 'failed' or
+# As of 0.14.0 this can be 'setup', 'active', 'completed', 'failed' or
# 'cancelled'. If this field is not returned, no migration process
# has been initiated
#
diff --git a/qmp-commands.hx b/qmp-commands.hx
index cae890e..408ae9c 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -2937,7 +2937,7 @@ block migration status.
The main json-object contains the following:
- "status": migration status (json-string)
- - Possible values: "active", "completed", "failed", "cancelled"
+ - Possible values: "setup", "active", "completed", "failed", "cancelled"
- "total-time": total amount of ms since migration started. If
migration has ended, it returns the total migration
time (json-int)
More information about the Spice-commits
mailing list