* [PATCH 0/5] more solidification work
@ 2010-01-13 16:14 Vincent Hanquez
2010-01-13 16:14 ` [PATCH 1/5] add some return values testing in stubdom Vincent Hanquez
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Vincent Hanquez @ 2010-01-13 16:14 UTC (permalink / raw)
To: xen-devel; +Cc: Vincent Hanquez
[-- Attachment #1: Type: text/plain, Size: 883 bytes --]
more solidification work around return values in stubdom,
invalid device kinds, and fix name to domid. nothing
ground breaking but quite nice to have.
Vincent Hanquez (5):
add some return values testing in stubdom
initialize enum to 1, to prevent defaulting to the 0 values when
structure when not properly initialized by the client.
add fuse around generic_device_add related to invalid kinds
add error in disk_add if phystype is not recognized
fix name to domid conversion.
tools/libxl/libxl.c | 38 ++++++++++++++++++++++++++++----------
tools/libxl/libxl.h | 6 +++---
tools/libxl/libxl_device.c | 5 ++++-
tools/libxl/libxl_internal.h | 4 ++--
tools/libxl/libxl_utils.c | 33 +++++++++++----------------------
tools/libxl/xl.c | 4 +---
6 files changed, 49 insertions(+), 41 deletions(-)
[-- Attachment #2: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/5] add some return values testing in stubdom
2010-01-13 16:14 [PATCH 0/5] more solidification work Vincent Hanquez
@ 2010-01-13 16:14 ` Vincent Hanquez
2010-01-13 16:14 ` [PATCH 2/5] initialize enum to 1, to prevent defaulting to the 0 values when structure when not properly initialized by the client Vincent Hanquez
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Vincent Hanquez @ 2010-01-13 16:14 UTC (permalink / raw)
To: xen-devel; +Cc: Vincent Hanquez
[-- Attachment #1: Type: text/plain, Size: 191 bytes --]
Signed-off-by: Vincent Hanquez <vincent.hanquez@eu.citrix.com>
---
tools/libxl/libxl.c | 35 +++++++++++++++++++++++++----------
1 files changed, 25 insertions(+), 10 deletions(-)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-add-some-return-values-testing-in-stubdom.patch --]
[-- Type: text/x-patch; name="0001-add-some-return-values-testing-in-stubdom.patch", Size: 3207 bytes --]
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index df3ddc0..ede485b 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -824,7 +824,7 @@ static int libxl_create_stubdom(struct libxl_ctx *ctx,
libxl_device_vkb *vkb,
libxl_device_model_starting **starting_r)
{
- int i, num_console = 1;
+ int i, num_console = 1, ret;
libxl_device_console *console;
libxl_domain_create_info c_info;
libxl_domain_build_info b_info;
@@ -855,12 +855,18 @@ static int libxl_create_stubdom(struct libxl_ctx *ctx,
b_info.u.pv.features = "";
b_info.hvm = 0;
- libxl_domain_make(ctx, &c_info, &domid);
- libxl_domain_build(ctx, &b_info, domid, &state);
+ ret = libxl_domain_make(ctx, &c_info, &domid);
+ if (ret) return ret;
+ ret = libxl_domain_build(ctx, &b_info, domid, &state);
+ if (ret) return ret;
libxl_write_dmargs(ctx, domid, info->domid, args);
- libxl_xs_write(ctx, XBT_NULL, libxl_sprintf(ctx, "%s/image/device-model-domid", libxl_xs_get_dompath(ctx, info->domid)), "%d", domid);
- libxl_xs_write(ctx, XBT_NULL, libxl_sprintf(ctx, "%s/target", libxl_xs_get_dompath(ctx, domid)), "%d", info->domid);
+ libxl_xs_write(ctx, XBT_NULL,
+ libxl_sprintf(ctx, "%s/image/device-model-domid", libxl_xs_get_dompath(ctx, info->domid)),
+ "%d", domid);
+ libxl_xs_write(ctx, XBT_NULL,
+ libxl_sprintf(ctx, "%s/target", libxl_xs_get_dompath(ctx, domid)),
+ "%d", info->domid);
xc_domain_set_target(ctx->xch, domid, info->domid);
xs_set_target(ctx->xsh, domid, info->domid);
@@ -880,27 +886,36 @@ retry_transaction:
for (i = 0; i < num_disks; i++) {
disks[i].domid = domid;
- libxl_device_disk_add(ctx, domid, &disks[i]);
+ ret = libxl_device_disk_add(ctx, domid, &disks[i]);
+ if (ret) return ret;
}
for (i = 0; i < num_vifs; i++) {
vifs[i].domid = domid;
- libxl_device_nic_add(ctx, domid, &vifs[i]);
+ ret = libxl_device_nic_add(ctx, domid, &vifs[i]);
+ if (ret) return ret;
}
vfb->domid = domid;
- libxl_device_vfb_add(ctx, domid, vfb);
+ ret = libxl_device_vfb_add(ctx, domid, vfb);
+ if (ret) return ret;
vkb->domid = domid;
- libxl_device_vkb_add(ctx, domid, vkb);
+ ret = libxl_device_vkb_add(ctx, domid, vkb);
+ if (ret) return ret;
if (info->serial)
num_console++;
+
console = libxl_calloc(ctx, num_console, sizeof(libxl_device_console));
+ if (!console)
+ return ERROR_NOMEM;
+
for (i = 0; i < num_console; i++) {
console[i].devid = i;
console[i].constype = CONSTYPE_IOEMU;
console[i].domid = domid;
if (!i)
console[i].build_state = &state;
- libxl_device_console_add(ctx, domid, &console[i]);
+ ret = libxl_device_console_add(ctx, domid, &console[i]);
+ if (ret) return ret;
}
if (libxl_create_xenpv_qemu(ctx, vfb, num_console, console, &dm_starting) < 0) {
free(args);
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/5] initialize enum to 1, to prevent defaulting to the 0 values when structure when not properly initialized by the client.
2010-01-13 16:14 [PATCH 0/5] more solidification work Vincent Hanquez
2010-01-13 16:14 ` [PATCH 1/5] add some return values testing in stubdom Vincent Hanquez
@ 2010-01-13 16:14 ` Vincent Hanquez
2010-01-13 16:14 ` [PATCH 3/5] add fuse around generic_device_add related to invalid kinds Vincent Hanquez
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Vincent Hanquez @ 2010-01-13 16:14 UTC (permalink / raw)
To: xen-devel; +Cc: Vincent Hanquez
[-- Attachment #1: Type: text/plain, Size: 210 bytes --]
Signed-off-by: Vincent Hanquez <vincent.hanquez@eu.citrix.com>
---
tools/libxl/libxl.h | 6 +++---
tools/libxl/libxl_internal.h | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0002-initialize-enum-to-1-to-prevent-defaulting-to-the-0-.patch --]
[-- Type: text/x-patch; name="0002-initialize-enum-to-1-to-prevent-defaulting-to-the-0-.patch", Size: 1060 bytes --]
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
index 529dbd6..25a66d9 100644
--- a/tools/libxl/libxl.h
+++ b/tools/libxl/libxl.h
@@ -104,7 +104,7 @@ typedef struct {
} libxl_domain_suspend_info;
typedef enum {
- XENFV,
+ XENFV = 1,
XENPV,
} libxl_qemu_machine_type;
@@ -169,7 +169,7 @@ typedef struct {
} libxl_device_console;
typedef enum {
- PHYSTYPE_QCOW,
+ PHYSTYPE_QCOW = 1,
PHYSTYPE_QCOW2,
PHYSTYPE_VHD,
PHYSTYPE_AIO,
@@ -189,7 +189,7 @@ typedef struct {
} libxl_device_disk;
typedef enum {
- NICTYPE_IOEMU,
+ NICTYPE_IOEMU = 1,
NICTYPE_VIF,
} libxl_nic_type;
diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
index 7664e59..11698bc 100644
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -59,7 +59,7 @@ void xl_log(struct libxl_ctx *ctx, int errnoval, int loglevel, const char *file,
typedef enum {
- DEVICE_VIF,
+ DEVICE_VIF = 1,
DEVICE_VBD,
DEVICE_TAP,
DEVICE_PCI,
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/5] add fuse around generic_device_add related to invalid kinds
2010-01-13 16:14 [PATCH 0/5] more solidification work Vincent Hanquez
2010-01-13 16:14 ` [PATCH 1/5] add some return values testing in stubdom Vincent Hanquez
2010-01-13 16:14 ` [PATCH 2/5] initialize enum to 1, to prevent defaulting to the 0 values when structure when not properly initialized by the client Vincent Hanquez
@ 2010-01-13 16:14 ` Vincent Hanquez
2010-01-13 16:14 ` [PATCH 4/5] add error in disk_add if phystype is not recognized Vincent Hanquez
2010-01-13 16:14 ` [PATCH 5/5] fix name to domid conversion Vincent Hanquez
4 siblings, 0 replies; 6+ messages in thread
From: Vincent Hanquez @ 2010-01-13 16:14 UTC (permalink / raw)
To: xen-devel; +Cc: Vincent Hanquez
[-- Attachment #1: Type: text/plain, Size: 331 bytes --]
prevent segfault in case the backend or frontend kinds have
not been set to a correct kind value (or not initilized).
Signed-off-by: Vincent Hanquez <vincent.hanquez@eu.citrix.com>
---
tools/libxl/libxl_device.c | 5 ++++-
tools/libxl/libxl_internal.h | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0003-add-fuse-around-generic_device_add-related-to-invali.patch --]
[-- Type: text/x-patch; name="0003-add-fuse-around-generic_device_add-related-to-invali.patch", Size: 1301 bytes --]
diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
index 7bbc924..726c543 100644
--- a/tools/libxl/libxl_device.c
+++ b/tools/libxl/libxl_device.c
@@ -26,7 +26,7 @@
#include "libxl.h"
#include "libxl_internal.h"
-const char *string_of_kinds[] = {
+static const char *string_of_kinds[] = {
[DEVICE_VIF] = "vif",
[DEVICE_VBD] = "vbd",
[DEVICE_TAP] = "tap",
@@ -45,6 +45,9 @@ int libxl_device_generic_add(struct libxl_ctx *ctx, libxl_device *device,
struct xs_permissions backend_perms[2];
struct xs_permissions hotplug_perms[1];
+ if (!is_valid_device_kind(device->backend_kind) || !is_valid_device_kind(device->kind))
+ return ERROR_INVAL;
+
dom_path_backend = libxl_xs_get_dompath(ctx, device->backend_domid);
dom_path = libxl_xs_get_dompath(ctx, device->domid);
diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
index 11698bc..34f2e38 100644
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -68,7 +68,7 @@ typedef enum {
DEVICE_CONSOLE,
} libxl_device_kinds;
-extern const char *string_of_kinds[];
+#define is_valid_device_kind(kind) (((kind) >= DEVICE_VIF) && ((kind) <= DEVICE_CONSOLE))
typedef struct {
uint32_t backend_devid;
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/5] add error in disk_add if phystype is not recognized
2010-01-13 16:14 [PATCH 0/5] more solidification work Vincent Hanquez
` (2 preceding siblings ...)
2010-01-13 16:14 ` [PATCH 3/5] add fuse around generic_device_add related to invalid kinds Vincent Hanquez
@ 2010-01-13 16:14 ` Vincent Hanquez
2010-01-13 16:14 ` [PATCH 5/5] fix name to domid conversion Vincent Hanquez
4 siblings, 0 replies; 6+ messages in thread
From: Vincent Hanquez @ 2010-01-13 16:14 UTC (permalink / raw)
To: xen-devel; +Cc: Vincent Hanquez
[-- Attachment #1: Type: text/plain, Size: 157 bytes --]
Signed-off-by: Vincent Hanquez <vincent.hanquez@eu.citrix.com>
---
tools/libxl/libxl.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0004-add-error-in-disk_add-if-phystype-is-not-recognized.patch --]
[-- Type: text/x-patch; name="0004-add-error-in-disk_add-if-phystype-is-not-recognized.patch", Size: 532 bytes --]
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index ede485b..909bd17 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -1162,6 +1162,9 @@ int libxl_device_disk_add(struct libxl_ctx *ctx, uint32_t domid, libxl_device_di
device.backend_kind = DEVICE_TAP;
break;
+ default:
+ XL_LOG(ctx, XL_LOG_ERROR, "unrecognized disk physical type: %d\n", disk->phystype);
+ return ERROR_INVAL;
}
flexarray_set(back, boffset++, "frontend-id");
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 5/5] fix name to domid conversion.
2010-01-13 16:14 [PATCH 0/5] more solidification work Vincent Hanquez
` (3 preceding siblings ...)
2010-01-13 16:14 ` [PATCH 4/5] add error in disk_add if phystype is not recognized Vincent Hanquez
@ 2010-01-13 16:14 ` Vincent Hanquez
4 siblings, 0 replies; 6+ messages in thread
From: Vincent Hanquez @ 2010-01-13 16:14 UTC (permalink / raw)
To: xen-devel; +Cc: Vincent Hanquez
[-- Attachment #1: Type: text/plain, Size: 349 bytes --]
also simplify massively the function that iterate over all domains to
find the corresponding domid to a name.
Signed-off-by: Vincent Hanquez <vincent.hanquez@eu.citrix.com>
---
tools/libxl/libxl_utils.c | 33 +++++++++++----------------------
tools/libxl/xl.c | 4 +---
2 files changed, 12 insertions(+), 25 deletions(-)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0005-fix-name-to-domid-conversion.patch --]
[-- Type: text/x-patch; name="0005-fix-name-to-domid-conversion.patch", Size: 2124 bytes --]
diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c
index 36c1c47..eca4347 100644
--- a/tools/libxl/libxl_utils.c
+++ b/tools/libxl/libxl_utils.c
@@ -56,34 +56,23 @@ char *libxl_domid_to_name(struct libxl_ctx *ctx, uint32_t domid)
int libxl_name_to_domid(struct libxl_ctx *ctx, char *name, uint32_t *domid)
{
- unsigned int num, len;
- char path[strlen("/local/domain") + 12];
- int i, j, nb_domains;
- char *domname, **l;
+ int i, nb_domains;
+ char *domname;
struct libxl_dominfo *dominfo;
dominfo = libxl_domain_list(ctx, &nb_domains);
-
- l = xs_directory(ctx->xsh, XBT_NULL, "/local/domain", &num);
- for (i = 0; i < num; i++) {
- snprintf(path, sizeof(path), "/local/domain/%s/name", l[i]);
- domname = xs_read(ctx->xsh, XBT_NULL, path, &len);
- if (domname != NULL && len == strlen(name) && !strncmp(domname, name, len)) {
- int domid_i = atoi(l[i]);
- for (j = 0; j < nb_domains; j++) {
- if (dominfo[j].domid == domid_i) {
- *domid = domid_i;
- free(dominfo);
- free(l);
- free(domname);
- return 0;
- }
- }
+ if (!dominfo)
+ return ERROR_NOMEM;
+
+ for (i = 0; i < nb_domains; i++) {
+ domname = libxl_domid_to_name(ctx, dominfo[i].domid);
+ if (!domname)
+ continue;
+ if (strcmp(domname, name) == 0) {
+ *domid = dominfo[i].domid;
+ return 0;
}
- free(domname);
}
- free(dominfo);
- free(l);
return -1;
}
diff --git a/tools/libxl/xl.c b/tools/libxl/xl.c
index 90896f3..1e95ac5 100644
--- a/tools/libxl/xl.c
+++ b/tools/libxl/xl.c
@@ -59,9 +59,7 @@ static int domain_qualifier_to_domid(struct libxl_ctx *ctx, char *p, uint32_t *d
}
}
- if (i == 0)
- return -1;
- if (alldigit) {
+ if (i > 0 && alldigit) {
*domid = strtoul(p, NULL, 10);
return 0;
} else {
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-01-13 16:14 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-13 16:14 [PATCH 0/5] more solidification work Vincent Hanquez
2010-01-13 16:14 ` [PATCH 1/5] add some return values testing in stubdom Vincent Hanquez
2010-01-13 16:14 ` [PATCH 2/5] initialize enum to 1, to prevent defaulting to the 0 values when structure when not properly initialized by the client Vincent Hanquez
2010-01-13 16:14 ` [PATCH 3/5] add fuse around generic_device_add related to invalid kinds Vincent Hanquez
2010-01-13 16:14 ` [PATCH 4/5] add error in disk_add if phystype is not recognized Vincent Hanquez
2010-01-13 16:14 ` [PATCH 5/5] fix name to domid conversion Vincent Hanquez
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).