From nobody Sun Feb 8 21:33:29 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1554295569852831.7426860443329; Wed, 3 Apr 2019 05:46:09 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8EA04C1306F0; Wed, 3 Apr 2019 12:46:08 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 65D885C880; Wed, 3 Apr 2019 12:46:08 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 0BF45180338C; Wed, 3 Apr 2019 12:46:08 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x33CixI0010703 for ; Wed, 3 Apr 2019 08:44:59 -0400 Received: by smtp.corp.redhat.com (Postfix) id A5E9F177C0; Wed, 3 Apr 2019 12:44:59 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.229]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2D2E85C237 for ; Wed, 3 Apr 2019 12:44:59 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Wed, 3 Apr 2019 14:44:52 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 3/5] vmx: Refactor number parsing in virVMXParseConfig X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Wed, 03 Apr 2019 12:46:09 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Parsing of the cpu affinity list was using virParseNumber. Modernize it to get rid of the virParseNumber call. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/vmx/vmx.c | 56 ++++++++++++++++++--------------------------------- 1 file changed, 20 insertions(+), 36 deletions(-) diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 429630faaf..70d9443766 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -1500,43 +1500,35 @@ virVMXParseConfig(virVMXContext *ctx, } if (sched_cpu_affinity !=3D NULL && STRCASENEQ(sched_cpu_affinity, "al= l")) { - const char *current =3D sched_cpu_affinity; - int number, count =3D 0; + VIR_AUTOSTRINGLIST afflist =3D NULL; + char **aff; + size_t naffs; def->cpumask =3D virBitmapNew(VIR_DOMAIN_CPUMASK_LEN); if (!def->cpumask) goto cleanup; - while (*current !=3D '\0') { - virSkipSpaces(¤t); - - number =3D virParseNumber(¤t); - - if (number < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Expecting VMX entry 'sched.cpu.affinity'= to be " - "a comma separated list of unsigned integ= ers but " - "found '%s'"), sched_cpu_affinity); - goto cleanup; - } + if (!(afflist =3D virStringSplitCount(sched_cpu_affinity, ",", 0, = &naffs))) + goto cleanup; - if (number >=3D VIR_DOMAIN_CPUMASK_LEN) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("VMX entry 'sched.cpu.affinity' contains = a %d, " - "this value is too large"), number); - goto cleanup; - } + if (naffs < numvcpus) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Expecting VMX entry 'sched.cpu.affinity' to = contain " + "at least as many values as 'numvcpus' (%lld)= but " + "found only %zu value(s)"), numvcpus, naffs); + goto cleanup; + } - ignore_value(virBitmapSetBit(def->cpumask, number)); - ++count; + for (aff =3D afflist; *aff; aff++) { + const char *current =3D *aff; + unsigned int number; + int rc; + virSkipSpaces(¤t); + rc =3D virStrToLong_uip(current, (char **) ¤t, 10, &numb= er); virSkipSpaces(¤t); - if (*current =3D=3D ',') { - ++current; - } else if (*current =3D=3D '\0') { - break; - } else { + if (rc < 0 || *current !=3D '\0') { virReportError(VIR_ERR_INTERNAL_ERROR, _("Expecting VMX entry 'sched.cpu.affinity'= to be " "a comma separated list of unsigned integ= ers but " @@ -1544,15 +1536,7 @@ virVMXParseConfig(virVMXContext *ctx, goto cleanup; } - virSkipSpaces(¤t); - } - - if (count < numvcpus) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Expecting VMX entry 'sched.cpu.affinity' to = contain " - "at least as many values as 'numvcpus' (%lld)= but " - "found only %d value(s)"), numvcpus, count); - goto cleanup; + ignore_value(virBitmapSetBit(def->cpumask, number)); } } --=20 2.20.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list