qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: Jan Kiszka <jan.kiszka@siemens.com>, aliguori@us.ibm.com
Subject: [Qemu-devel] [PATCH 2/7] qemu-option: Fix qemu_opts_set_defaults() for corner cases
Date: Thu,  4 Jul 2013 15:09:18 +0200	[thread overview]
Message-ID: <1372943363-24081-3-git-send-email-armbru@redhat.com> (raw)
In-Reply-To: <1372943363-24081-1-git-send-email-armbru@redhat.com>

Commit 4f6dd9a changed the initialization of opts in opts_parse() to
this:

    if (defaults) {
        if (!id && !QTAILQ_EMPTY(&list->head)) {
            opts = qemu_opts_find(list, NULL);
        } else {
            opts = qemu_opts_create(list, id, 0);
        }
    } else {
        opts = qemu_opts_create(list, id, 1);
    }

Same as before for !defaults.

If defaults is true, and params has no ID, and options exist, we use
the first assignment.  It sets opts to null if all options have an ID.
opts_parse() then returns null.  qemu_opts_set_defaults() asserts the
value is non-null.  It's the only caller that passes true for
defaults.

To reproduce, try "-M xenpv -machine id=foo" (yes, "id=foo" is silly,
but it shouldn't crash).

I believe the function attempts to do the following:

    If options don't yet exist, create new options
    Else, if defaults, modify the existing options
    Else, if list->merge_lists, modify the existing options
    Else, fail

A straightforward call of qemu_opts_create() does exactly that.

Cc: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 util/qemu-option.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/util/qemu-option.c b/util/qemu-option.c
index 2715f27..e0ef426 100644
--- a/util/qemu-option.c
+++ b/util/qemu-option.c
@@ -914,15 +914,7 @@ static QemuOpts *opts_parse(QemuOptsList *list, const char *params,
         get_opt_value(value, sizeof(value), p+4);
         id = value;
     }
-    if (defaults) {
-        if (!id && !QTAILQ_EMPTY(&list->head)) {
-            opts = qemu_opts_find(list, NULL);
-        } else {
-            opts = qemu_opts_create(list, id, 0, &local_err);
-        }
-    } else {
-        opts = qemu_opts_create(list, id, 1, &local_err);
-    }
+    opts = qemu_opts_create(list, id, !defaults, &local_err);
     if (opts == NULL) {
         if (error_is_set(&local_err)) {
             qerror_report_err(local_err);
-- 
1.7.11.7

  parent reply	other threads:[~2013-07-04 13:09 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-04 13:09 [Qemu-devel] [PATCH 0/7] Fixes around -machine Markus Armbruster
2013-07-04 13:09 ` [Qemu-devel] [PATCH 1/7] qemu-option: Fix qemu_opts_find() for null id arguments Markus Armbruster
2013-07-04 14:40   ` Peter Maydell
2013-07-04 13:09 ` Markus Armbruster [this message]
2013-07-04 14:34   ` [Qemu-devel] [PATCH 2/7] qemu-option: Fix qemu_opts_set_defaults() for corner cases Peter Maydell
2013-07-04 15:28     ` Markus Armbruster
2013-07-04 15:53       ` Peter Maydell
2013-07-04 13:09 ` [Qemu-devel] [PATCH 3/7] vl: New qemu_get_machine_opts() Markus Armbruster
2013-07-04 14:38   ` Peter Maydell
2013-07-04 15:03     ` Markus Armbruster
2013-07-04 15:11       ` Peter Maydell
2013-07-04 16:11         ` Markus Armbruster
2013-07-04 16:46           ` Peter Maydell
2013-07-04 15:14     ` Andreas Färber
2013-07-04 13:09 ` [Qemu-devel] [PATCH 4/7] Fix -machine options accel, kernel_irqchip, kvm_shadow_mem Markus Armbruster
2013-07-04 14:42   ` Peter Maydell
2013-07-04 15:58     ` Markus Armbruster
2013-07-04 16:03       ` Peter Maydell
2013-07-04 16:50         ` Markus Armbruster
2013-07-04 13:09 ` [Qemu-devel] [PATCH 5/7] microblaze: Fix latent bug with default DTB lookup Markus Armbruster
2013-07-10  3:05   ` Peter Crosthwaite
2013-07-04 13:09 ` [Qemu-devel] [PATCH 6/7] Simplify -machine option queries with qemu_get_machine_opts() Markus Armbruster
2013-07-04 13:09 ` [Qemu-devel] [PATCH 7/7] vl: Tighten parsing of -machine option phandle_start Markus Armbruster
2013-07-04 13:31   ` Alexander Graf
2013-07-04 15:01     ` Markus Armbruster
2013-07-04 23:21       ` Alexander Graf
2013-07-10 19:33 ` [Qemu-devel] [PATCH 0/7] Fixes around -machine Anthony Liguori
2013-07-11  6:45   ` Markus Armbruster

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1372943363-24081-3-git-send-email-armbru@redhat.com \
    --to=armbru@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=jan.kiszka@siemens.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).