[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 6/8] vl.c: Use parse_uint_full() for NUMA nodeid
From: |
Eduardo Habkost |
Subject: |
Re: [Qemu-devel] [PATCH 6/8] vl.c: Use parse_uint_full() for NUMA nodeid |
Date: |
Wed, 16 Jan 2013 15:42:36 -0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Wed, Jan 16, 2013 at 10:25:31AM -0700, Eric Blake wrote:
> On 01/16/2013 08:24 AM, Eduardo Habkost wrote:
> > This should catch many kinds of errors that the current code wasn't
> > checking for:
> >
> > - Values that can't be parsed as a number
> > - Negative values
> > - Overflow
> > - Empty string
> >
> > Signed-off-by: Eduardo Habkost <address@hidden>
> > ---
> > Cc: Eric Blake <address@hidden>
> > ---
> > vl.c | 7 +++++--
> > 1 file changed, 5 insertions(+), 2 deletions(-)
> >
>
> > +++ b/vl.c
> > @@ -1264,11 +1264,14 @@ static void numa_add(const char *optarg)
> > if (get_param_value(option, 128, "nodeid", optarg) == 0) {
> > nodenr = nb_numa_nodes;
> > } else {
> > - nodenr = strtoull(option, NULL, 10);
> > + if (parse_uint_full(option, &nodenr) < 0) {
>
> This allows a user to pass octal or hex numbers, where previously it was
> forced to be decimal. That means 'nodeid=010' is now '8' instead of
> '10'; is that intentional?
It wasn't intentional, thanks for catching it!
However, the existing option parsing infra-structure
(parse_option_number() at qemu-option.c and opts_type_uint64() at
opts-visitor.c) use 0 as the 'base' parameter. So when we convert this
code to use that infra-structure, it will end up accepting hex and octal
numbers as well.
So I believe I will fix it this way:
- Add 'base' parameter to parse_uint*()
- Use base=10 when parsing "-numa" (keeping "nodeid=010" working, just
in case)
- Use the QemuOpts number parser when introducing the "numa-node"
config section, and manually parse/convert the (then obsolete)
"-numa node,..." option to "numa-node"
Or, we could simply change the meaning of "nodeid=010" and document it
in the commit message and QEMU ChageLog. Which option do the QEMU
maintainers prefer?
>
> >
> > if (nodenr >= MAX_NODES) {
> > - fprintf(stderr, "qemu: invalid NUMA nodeid: %d\n", nodenr);
> > + fprintf(stderr, "qemu: invalid NUMA nodeid: %llu\n", nodenr);
>
> Already mentions that this part belongs in 5/8.
I will fix it. Thanks.
--
Eduardo
[Qemu-devel] [PATCH 2/8] vl.c: Fix off-by-one bug when handling "-numa node" argument, Eduardo Habkost, 2013/01/16
[Qemu-devel] [PATCH 7/8] vl.c: Extract -numa "cpus" parsing to separate function, Eduardo Habkost, 2013/01/16
[Qemu-devel] [PATCH 3/8] vl.c: Abort on unknown -numa option type, Eduardo Habkost, 2013/01/16
[Qemu-devel] [PATCH 8/8] vl.c: validate -numa "cpus" parameter properly, Eduardo Habkost, 2013/01/16