|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH V7 1/3] libxl: Add support for generic virtio device
On Fri, Dec 09, 2022 at 05:43:54AM +0530, Viresh Kumar wrote:
> On 08-12-22, 18:06, Anthony PERARD wrote:
> > Nit: Something like:
> > const char check[] = "virtio,device";
> > const size_t checkl = sizeof(check) - 1;
> > ... strncmp(tmp, check, checkl)...
> > (or just strncmp(tmp, check, sizeof(check)-1))
> > would avoid issue with both string "virtio,device" potentially been
> > different.
>
> I think that is a generic problem with all the strings I am using. What about
> this diff over current patch ?
>
> diff --git a/tools/libs/light/libxl_internal.h
> b/tools/libs/light/libxl_internal.h
> index cdd155d925c1..a062fca0e2bb 100644
> --- a/tools/libs/light/libxl_internal.h
> +++ b/tools/libs/light/libxl_internal.h
> @@ -166,6 +166,11 @@
> /* Convert pfn to physical address space. */
> #define pfn_to_paddr(x) ((uint64_t)(x) << XC_PAGE_SHIFT)
>
> +/* Virtio device types */
> +#define VIRTIO_DEVICE_TYPE_GENERIC "virtio,device"
> +#define VIRTIO_DEVICE_TYPE_GPIO "virtio,device22"
> +#define VIRTIO_DEVICE_TYPE_I2C "virtio,device29"
That a good idea.
> /* logging */
> _hidden void libxl__logv(libxl_ctx *ctx, xentoollog_level msglevel, int
> errnoval,
> const char *file /* may be 0 */, int line /* ignored if !file
> */,
> diff --git a/tools/libs/light/libxl_virtio.c b/tools/libs/light/libxl_virtio.c
> index 64cec989c674..183d9c906e27 100644
> --- a/tools/libs/light/libxl_virtio.c
> +++ b/tools/libs/light/libxl_virtio.c
> @@ -62,7 +62,7 @@ static int libxl__virtio_from_xenstore(libxl__gc *gc, const
> char *libxl_path,
> libxl_device_virtio *virtio)
> {
> const char *be_path, *tmp = NULL;
> - int rc;
> + int rc, len = sizeof(VIRTIO_DEVICE_TYPE_GENERIC) - 1;
That `len` variable is initialized quite far away from where it's used,
so ...
>
> virtio->devid = devid;
>
> @@ -112,8 +110,8 @@ static int libxl__virtio_from_xenstore(libxl__gc *gc,
> const char *libxl_path,
> if (rc) goto out;
>
> if (tmp) {
... you could declare `len` here instead.
> - if (!strncmp(tmp, "virtio,device", strlen("virtio,device"))) {
> - virtio->type = strdup(tmp);
> + if (!strncmp(tmp, VIRTIO_DEVICE_TYPE_GENERIC, len)) {
> + virtio->type = libxl__strdup(NOGC, tmp);
> } else {
> return ERROR_INVAL;
> }
>
Otherwise, those change looks fine.
Thanks,
--
Anthony PERARD
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |