[libvirt] [PATCHv4 6/5] conf: reject controllers with duplicate indexes
Eric Blake
eblake at redhat.com
Thu Apr 25 00:59:25 UTC 2013
On 04/23/2013 06:47 AM, Ján Tomko wrote:
> Reject multiple controllers with the same index,
> except for USB controllers.
> Multi-function USB controllers can have the same index.
> ---
> src/conf/domain_conf.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 64 insertions(+)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 5740009..dd9beba 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -2574,6 +2574,68 @@ virDomainDeviceInfoIterate(virDomainDefPtr def,
>
>
> static int
> +virDomainDefRejectDuplicateControllers(virDomainDefPtr def)
> +{
> + int max_idx[VIR_DOMAIN_CONTROLLER_TYPE_LAST];
> + virDomainControllerDefPtr cont;
> + virBitmapPtr *bitmaps = NULL;
> + size_t nbitmaps = 0;
> + int ret = -1;
> + bool b;
> + int i;
> +
> + if (VIR_ALLOC_N(bitmaps, VIR_DOMAIN_CONTROLLER_TYPE_LAST) < 0)
> + goto no_memory;
Why do you stack allocate an array of max_idx, but heap allocate an
array of bitmap pointers? It should be possible to stack allocate both
arrays, without exceeding max stack bounds, since
VIR_DOMAIN_CONTROLLER_TYPE_LAST is small.
> +
> + for (i = 0; i < VIR_DOMAIN_CONTROLLER_TYPE_LAST; i++)
> + max_idx[i] = -1;
Would a memset be any faster than a for loop here?
What you have is correct, so I'm comfortable giving ACK, but if you want
to post a v5 with the tweaks I mentioned, I'll review that too.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130424/2d8e5f9a/attachment-0001.sig>
More information about the libvir-list
mailing list