[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