From: Eduardo Habkost <ehabkost@redhat.com>
To: Laurent Vivier <lvivier@redhat.com>
Cc: "Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"qemu-devel@nongnu.org Developers" <qemu-devel@nongnu.org>,
"Thomas Huth" <thuth@redhat.com>,
"qemu-ppc@nongnu.org list:PowerPC" <qemu-ppc@nongnu.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"David Gibson" <david@gibson.dropbear.id.au>
Subject: Re: [Qemu-devel] [PATCH] cpu: don't allow negative core id
Date: Wed, 2 Aug 2017 18:29:33 -0300 [thread overview]
Message-ID: <20170802212933.GG3108@localhost.localdomain> (raw)
In-Reply-To: <de5b3384-086b-bf7f-944f-94d10e185a7d@redhat.com>
On Wed, Aug 02, 2017 at 03:50:36PM +0200, Laurent Vivier wrote:
> On 02/08/2017 15:42, Philippe Mathieu-Daudé wrote:
> > Hi Laurent,
> >
> > On Wed, Aug 2, 2017 at 7:32 AM, Laurent Vivier <lvivier@redhat.com> wrote:
> >> With pseries machine type a negative core-id is not managed properly:
> >> -1 gives an inaccurate error message ("core -1 already populated"),
> >> -2 crashes QEMU (core dump)
> >>
> >> As it seems a negative value is invalid for any architecture,
> >> instead of checking this in spapr_core_pre_plug() I think it's better
> >> to check this in the generic part, core_prop_set_core_id()
> >
> > Why is this property signed? If there is not reason to use it negative,
> > is it possible to use object_property_add(.."uint"..)?
>
> You should be right:
>
> { 'struct': 'NumaNodeOptions',
> 'data': {
> '*nodeid': 'uint16',
> '*cpus': ['uint16'],
> '*mem': 'size',
> '*memdev': 'str' }}
>
> but
>
> { 'struct': 'CpuInstanceProperties',
> 'data': { '*node-id': 'int',
> '*socket-id': 'int',
> '*core-id': 'int',
> '*thread-id': 'int'
> }
> }
>
> But I'm not sure it's a good idea to change the API now.
Property parsing is not affected by the QAPI schema at all, so
touching the schema wouldn't fix the bug.
The same applies to the 'type' argument to object_property_add():
it is ignored everywhere.
However, the property setter can simply use a visitor for unsigned values, and
it will reject negative values automatically, e.g.:
diff --git a/hw/cpu/core.c b/hw/cpu/core.c
index 2bf960d..b5af2bf 100644
--- a/hw/cpu/core.c
+++ b/hw/cpu/core.c
@@ -25,9 +25,9 @@ static void core_prop_set_core_id(Object *obj, Visitor *v, const char *name,
{
CPUCore *core = CPU_CORE(obj);
Error *local_err = NULL;
- int64_t value;
+ uint32_t value;
- visit_type_int(v, name, &value, &local_err);
+ visit_type_uint32(v, name, &value, &local_err);
if (local_err) {
error_propagate(errp, local_err);
return;
$ ./ppc64-softmmu/qemu-system-ppc64 -device POWER8_v2.0-spapr-cpu-core,core-id=-2
qemu-system-ppc64: -device POWER8_v2.0-spapr-cpu-core,core-id=-2: Parameter 'core-id' expects uint32_t
I would suggest changing the CPUCore struct fields to uint32_t or
uint64_t, but it would be more intrusive and we're past hard
freeze. Your patch looks good for 2.10.
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
I'm queueing it on machine-next.
--
Eduardo
next prev parent reply other threads:[~2017-08-02 21:29 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-02 10:32 [Qemu-devel] [PATCH] cpu: don't allow negative core id Laurent Vivier
2017-08-02 13:42 ` Philippe Mathieu-Daudé
2017-08-02 13:50 ` Laurent Vivier
2017-08-02 21:29 ` Eduardo Habkost [this message]
2017-08-03 13:21 ` Philippe Mathieu-Daudé
2017-08-03 15:04 ` Igor Mammedov
2017-08-02 13:58 ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
2017-08-02 14:22 ` [Qemu-devel] " David Gibson
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=20170802212933.GG3108@localhost.localdomain \
--to=ehabkost@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=f4bug@amsat.org \
--cc=lvivier@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=thuth@redhat.com \
/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).