* [Qemu-devel] [PULL 0/3] QAPI patches for 2017-07-12
@ 2017-07-12 16:09 Markus Armbruster
2017-07-12 16:09 ` [Qemu-devel] [PULL 1/3] qobject: Catch another straggler for use of qdict_put_str() Markus Armbruster
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Markus Armbruster @ 2017-07-12 16:09 UTC (permalink / raw)
To: qemu-devel
The following changes since commit aa916e409c04cb614ec2fee8b6b33836bf5998bb:
Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.10-20170711' into staging (2017-07-11 16:34:09 +0100)
are available in the git repository at:
git://repo.or.cz/qemu/armbru.git tags/pull-qapi-2017-07-12
for you to fetch changes up to 086ee7a6200fa5ad795b12110b5b3d5a93dcac3e:
scripts: use build_ prefix for string not piped through cgen() (2017-07-12 17:51:54 +0200)
----------------------------------------------------------------
QAPI patches for 2017-07-12
----------------------------------------------------------------
Eric Blake (2):
qobject: Catch another straggler for use of qdict_put_str()
qobject: Update coccinelle script to catch Q{INC, DEC}REF
Marc-André Lureau (1):
scripts: use build_ prefix for string not piped through cgen()
monitor.c | 2 +-
qemu-img.c | 2 +-
scripts/coccinelle/qobject.cocci | 6 ++++++
scripts/qapi-commands.py | 8 ++++----
scripts/qapi-event.py | 12 ++++++------
scripts/qapi.py | 2 +-
6 files changed, 19 insertions(+), 13 deletions(-)
--
2.7.5
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PULL 1/3] qobject: Catch another straggler for use of qdict_put_str()
2017-07-12 16:09 [Qemu-devel] [PULL 0/3] QAPI patches for 2017-07-12 Markus Armbruster
@ 2017-07-12 16:09 ` Markus Armbruster
2017-07-12 16:09 ` [Qemu-devel] [PULL 2/3] qobject: Update coccinelle script to catch Q{INC, DEC}REF Markus Armbruster
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Markus Armbruster @ 2017-07-12 16:09 UTC (permalink / raw)
To: qemu-devel
From: Eric Blake <eblake@redhat.com>
Dan's addition of key-secret improvements in commit 29cf9336 was
developed prior to the addition of QDict scalar insertion macros,
but merged after the general cleanup in commit 46f5ac20.
Patch created mechanically by rerunning:
spatch --sp-file scripts/coccinelle/qobject.cocci \
--macro-file scripts/cocci-macro-file.h --dir . --in-place
Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Message-Id: <20170624181008.25497-2-eblake@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
qemu-img.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/qemu-img.c b/qemu-img.c
index f7ffb79..02900ce 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -355,7 +355,7 @@ static int img_add_key_secrets(void *opaque,
QDict *options = opaque;
if (g_str_has_suffix(name, "key-secret")) {
- qdict_put(options, name, qstring_from_str(value));
+ qdict_put_str(options, name, value);
}
return 0;
--
2.7.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PULL 2/3] qobject: Update coccinelle script to catch Q{INC, DEC}REF
2017-07-12 16:09 [Qemu-devel] [PULL 0/3] QAPI patches for 2017-07-12 Markus Armbruster
2017-07-12 16:09 ` [Qemu-devel] [PULL 1/3] qobject: Catch another straggler for use of qdict_put_str() Markus Armbruster
@ 2017-07-12 16:09 ` Markus Armbruster
2017-07-12 16:09 ` [Qemu-devel] [PULL 3/3] scripts: use build_ prefix for string not piped through cgen() Markus Armbruster
2017-07-13 17:39 ` [Qemu-devel] [PULL 0/3] QAPI patches for 2017-07-12 Peter Maydell
3 siblings, 0 replies; 5+ messages in thread
From: Markus Armbruster @ 2017-07-12 16:09 UTC (permalink / raw)
To: qemu-devel
From: Eric Blake <eblake@redhat.com>
The recent commit b097efc0 used qobject_decref(QOBJECT(E)), even
though we already have QDECREF(E) for that purpose. We can update
our coccinelle script to catch any future relapses; with that in
place, the rest of the patch is generated with:
spatch --sp-file scripts/coccinelle/qobject.cocci \
--macro-file scripts/cocci-macro-file.h --dir . --in-place
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20170624181008.25497-3-eblake@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
monitor.c | 2 +-
scripts/coccinelle/qobject.cocci | 6 ++++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/monitor.c b/monitor.c
index d8ac20f..61b7982 100644
--- a/monitor.c
+++ b/monitor.c
@@ -3842,7 +3842,7 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens)
req_json = qobject_to_json(req);
trace_handle_qmp_command(mon, qstring_get_str(req_json));
- qobject_decref(QOBJECT(req_json));
+ QDECREF(req_json);
rsp = qmp_dispatch(cur_mon->qmp.commands, req);
diff --git a/scripts/coccinelle/qobject.cocci b/scripts/coccinelle/qobject.cocci
index c3253de..c518caf 100644
--- a/scripts/coccinelle/qobject.cocci
+++ b/scripts/coccinelle/qobject.cocci
@@ -3,6 +3,12 @@
expression Obj, Key, E;
@@
(
+- qobject_incref(QOBJECT(E));
++ QINCREF(E);
+|
+- qobject_decref(QOBJECT(E));
++ QDECREF(E);
+|
- qdict_put_obj(Obj, Key, QOBJECT(E));
+ qdict_put(Obj, Key, E);
|
--
2.7.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PULL 3/3] scripts: use build_ prefix for string not piped through cgen()
2017-07-12 16:09 [Qemu-devel] [PULL 0/3] QAPI patches for 2017-07-12 Markus Armbruster
2017-07-12 16:09 ` [Qemu-devel] [PULL 1/3] qobject: Catch another straggler for use of qdict_put_str() Markus Armbruster
2017-07-12 16:09 ` [Qemu-devel] [PULL 2/3] qobject: Update coccinelle script to catch Q{INC, DEC}REF Markus Armbruster
@ 2017-07-12 16:09 ` Markus Armbruster
2017-07-13 17:39 ` [Qemu-devel] [PULL 0/3] QAPI patches for 2017-07-12 Peter Maydell
3 siblings, 0 replies; 5+ messages in thread
From: Markus Armbruster @ 2017-07-12 16:09 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau
From: Marc-André Lureau <marcandre.lureau@redhat.com>
The gen_ prefix is awkward. Generated C should go through cgen()
exactly once (see commit 1f9a7a1). The common way to get this wrong is
passing a foo=gen_foo() keyword argument to mcgen(). I'd like us to
adopt a naming convention where gen_ means "something that's been piped
through cgen(), and thus must not be passed to cgen() or mcgen()".
Requires renaming gen_params(), gen_marshal_proto() and
gen_event_send_proto().
Suggested-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20170601124143.10915-1-marcandre.lureau@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
scripts/qapi-commands.py | 8 ++++----
scripts/qapi-event.py | 12 ++++++------
scripts/qapi.py | 2 +-
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/scripts/qapi-commands.py b/scripts/qapi-commands.py
index 1943de4..974d0a4 100644
--- a/scripts/qapi-commands.py
+++ b/scripts/qapi-commands.py
@@ -21,7 +21,7 @@ def gen_command_decl(name, arg_type, boxed, ret_type):
''',
c_type=(ret_type and ret_type.c_type()) or 'void',
c_name=c_name(name),
- params=gen_params(arg_type, boxed, 'Error **errp'))
+ params=build_params(arg_type, boxed, 'Error **errp'))
def gen_call(name, arg_type, boxed, ret_type):
@@ -82,7 +82,7 @@ static void qmp_marshal_output_%(c_name)s(%(c_type)s ret_in, QObject **ret_out,
c_type=ret_type.c_type(), c_name=ret_type.c_name())
-def gen_marshal_proto(name):
+def build_marshal_proto(name):
return ('void qmp_marshal_%s(QDict *args, QObject **ret, Error **errp)'
% c_name(name))
@@ -91,7 +91,7 @@ def gen_marshal_decl(name):
return mcgen('''
%(proto)s;
''',
- proto=gen_marshal_proto(name))
+ proto=build_marshal_proto(name))
def gen_marshal(name, arg_type, boxed, ret_type):
@@ -103,7 +103,7 @@ def gen_marshal(name, arg_type, boxed, ret_type):
{
Error *err = NULL;
''',
- proto=gen_marshal_proto(name))
+ proto=build_marshal_proto(name))
if ret_type:
ret += mcgen('''
diff --git a/scripts/qapi-event.py b/scripts/qapi-event.py
index 0485e39..bcbef10 100644
--- a/scripts/qapi-event.py
+++ b/scripts/qapi-event.py
@@ -14,10 +14,10 @@
from qapi import *
-def gen_event_send_proto(name, arg_type, boxed):
+def build_event_send_proto(name, arg_type, boxed):
return 'void qapi_event_send_%(c_name)s(%(param)s)' % {
'c_name': c_name(name.lower()),
- 'param': gen_params(arg_type, boxed, 'Error **errp')}
+ 'param': build_params(arg_type, boxed, 'Error **errp')}
def gen_event_send_decl(name, arg_type, boxed):
@@ -25,10 +25,10 @@ def gen_event_send_decl(name, arg_type, boxed):
%(proto)s;
''',
- proto=gen_event_send_proto(name, arg_type, boxed))
+ proto=build_event_send_proto(name, arg_type, boxed))
-# Declare and initialize an object 'qapi' using parameters from gen_params()
+# Declare and initialize an object 'qapi' using parameters from build_params()
def gen_param_var(typ):
assert not typ.variants
ret = mcgen('''
@@ -42,7 +42,7 @@ def gen_param_var(typ):
if memb.optional:
ret += 'has_' + c_name(memb.name) + sep
if memb.type.name == 'str':
- # Cast away const added in gen_params()
+ # Cast away const added in build_params()
ret += '(char *)'
ret += c_name(memb.name)
ret += mcgen('''
@@ -72,7 +72,7 @@ def gen_event_send(name, arg_type, boxed):
Error *err = NULL;
QMPEventFuncEmit emit;
''',
- proto=gen_event_send_proto(name, arg_type, boxed))
+ proto=build_event_send_proto(name, arg_type, boxed))
if arg_type and not arg_type.is_empty():
ret += mcgen('''
diff --git a/scripts/qapi.py b/scripts/qapi.py
index 0de809f..84e2eb4 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -1897,7 +1897,7 @@ extern const char *const %(c_name)s_lookup[];
return ret
-def gen_params(arg_type, boxed, extra):
+def build_params(arg_type, boxed, extra):
if not arg_type:
assert not boxed
return extra
--
2.7.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PULL 0/3] QAPI patches for 2017-07-12
2017-07-12 16:09 [Qemu-devel] [PULL 0/3] QAPI patches for 2017-07-12 Markus Armbruster
` (2 preceding siblings ...)
2017-07-12 16:09 ` [Qemu-devel] [PULL 3/3] scripts: use build_ prefix for string not piped through cgen() Markus Armbruster
@ 2017-07-13 17:39 ` Peter Maydell
3 siblings, 0 replies; 5+ messages in thread
From: Peter Maydell @ 2017-07-13 17:39 UTC (permalink / raw)
To: Markus Armbruster; +Cc: QEMU Developers
On 12 July 2017 at 17:09, Markus Armbruster <armbru@redhat.com> wrote:
> The following changes since commit aa916e409c04cb614ec2fee8b6b33836bf5998bb:
>
> Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.10-20170711' into staging (2017-07-11 16:34:09 +0100)
>
> are available in the git repository at:
>
> git://repo.or.cz/qemu/armbru.git tags/pull-qapi-2017-07-12
>
> for you to fetch changes up to 086ee7a6200fa5ad795b12110b5b3d5a93dcac3e:
>
> scripts: use build_ prefix for string not piped through cgen() (2017-07-12 17:51:54 +0200)
>
> ----------------------------------------------------------------
> QAPI patches for 2017-07-12
>
> ----------------------------------------------------------------
> Eric Blake (2):
> qobject: Catch another straggler for use of qdict_put_str()
> qobject: Update coccinelle script to catch Q{INC, DEC}REF
>
> Marc-André Lureau (1):
> scripts: use build_ prefix for string not piped through cgen()
>
Applied, thanks.
-- PMM
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-07-13 17:40 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-12 16:09 [Qemu-devel] [PULL 0/3] QAPI patches for 2017-07-12 Markus Armbruster
2017-07-12 16:09 ` [Qemu-devel] [PULL 1/3] qobject: Catch another straggler for use of qdict_put_str() Markus Armbruster
2017-07-12 16:09 ` [Qemu-devel] [PULL 2/3] qobject: Update coccinelle script to catch Q{INC, DEC}REF Markus Armbruster
2017-07-12 16:09 ` [Qemu-devel] [PULL 3/3] scripts: use build_ prefix for string not piped through cgen() Markus Armbruster
2017-07-13 17:39 ` [Qemu-devel] [PULL 0/3] QAPI patches for 2017-07-12 Peter Maydell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).