Signed-off-by: Boris Ostrovsky <boris.ostrov...@oracle.com>
---
tools/libxl/libxl.c | 4 ++--
tools/libxl/libxl_utils.c | 7 +++++++
tools/libxl/libxl_utils.h | 2 ++
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index f7961f6..84fd2ca 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -5319,7 +5319,7 @@ int libxl_set_vcpuaffinity(libxl_ctx *ctx, uint32_t
domid, uint32_t vcpuid,
if (rc)
goto out;
- libxl_bitmap_copy(ctx, &hard, cpumap_hard);
+ libxl_bitmap_copy_partial(ctx, &hard, cpumap_hard);
flags = XEN_VCPUAFFINITY_HARD;
}
if (cpumap_soft) {
@@ -5327,7 +5327,7 @@ int libxl_set_vcpuaffinity(libxl_ctx *ctx, uint32_t
domid, uint32_t vcpuid,
if (rc)
goto out;
- libxl_bitmap_copy(ctx, &soft, cpumap_soft);
+ libxl_bitmap_copy_partial(ctx, &soft, cpumap_soft);
flags |= XEN_VCPUAFFINITY_SOFT;
}
diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c
index 58df4f3..2a08bef 100644
--- a/tools/libxl/libxl_utils.c
+++ b/tools/libxl/libxl_utils.c
@@ -614,6 +614,13 @@ void libxl_bitmap_copy(libxl_ctx *ctx, libxl_bitmap *dptr,
memcpy(dptr->map, sptr->map, sz * sizeof(*dptr->map));
}
+void libxl_bitmap_copy_partial(libxl_ctx *ctx, libxl_bitmap *dptr,
+ const libxl_bitmap *sptr)
+{
+ assert(dptr->size >= sptr->size);
+ memcpy(dptr->map, sptr->map, sptr->size * sizeof(*dptr->map));
+}
+
void libxl_bitmap_copy_alloc(libxl_ctx *ctx,
libxl_bitmap *dptr,
const libxl_bitmap *sptr)
diff --git a/tools/libxl/libxl_utils.h b/tools/libxl/libxl_utils.h
index 117b229..d4d0a51 100644
--- a/tools/libxl/libxl_utils.h
+++ b/tools/libxl/libxl_utils.h
@@ -80,6 +80,8 @@ void libxl_bitmap_copy_alloc(libxl_ctx *ctx, libxl_bitmap
*dptr,
const libxl_bitmap *sptr);
void libxl_bitmap_copy(libxl_ctx *ctx, libxl_bitmap *dptr,
const libxl_bitmap *sptr);
+void libxl_bitmap_copy_partial(libxl_ctx *ctx, libxl_bitmap *dptr,
+ const libxl_bitmap *sptr);
int libxl_bitmap_is_full(const libxl_bitmap *bitmap);
int libxl_bitmap_is_empty(const libxl_bitmap *bitmap);
int libxl_bitmap_test(const libxl_bitmap *bitmap, int bit);
--
1.7.1