From: Chen Hanxiao <chenhanxiao@xxxxxxxxxxxxxx> Don't do duplicate work when getting pagesize. With some debug logs added. Signed-off-by: Chen Hanxiao <chenhanxiao@xxxxxxxxxxxxxx> --- src/lxc/lxc_container.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c index 255c711..e85d01c 100644 --- a/src/lxc/lxc_container.c +++ b/src/lxc/lxc_container.c @@ -144,6 +144,7 @@ int lxcContainerHasReboot(void) int cmd, v; int status; char *tmp; + int stacksize = getpagesize() * 4; if (virFileReadAll("/proc/sys/kernel/ctrl-alt-del", 10, &buf) < 0) return -1; @@ -160,10 +161,12 @@ int lxcContainerHasReboot(void) VIR_FREE(buf); cmd = v ? LINUX_REBOOT_CMD_CAD_ON : LINUX_REBOOT_CMD_CAD_OFF; - if (VIR_ALLOC_N(stack, getpagesize() * 4) < 0) + if (VIR_ALLOC_N(stack, stacksize) < 0) { + VIR_DEBUG("Unable to allocate stack"); return -1; + } - childStack = stack + (getpagesize() * 4); + childStack = stack + stacksize; cpid = clone(lxcContainerRebootChild, childStack, flags, &cmd); VIR_FREE(stack); @@ -2011,8 +2014,10 @@ int lxcContainerStart(virDomainDefPtr def, }; /* allocate a stack for the container */ - if (VIR_ALLOC_N(stack, stacksize) < 0) + if (VIR_ALLOC_N(stack, stacksize) < 0) { + VIR_DEBUG("Unable to allocate stack"); return -1; + } stacktop = stack + stacksize; cflags = CLONE_NEWPID|CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|SIGCHLD; @@ -2060,6 +2065,7 @@ int lxcContainerAvailable(int features) int cpid; char *childStack; char *stack; + int stacksize = getpagesize() * 4; if (features & LXC_CONTAINER_FEATURE_USER) flags |= CLONE_NEWUSER; @@ -2067,12 +2073,12 @@ int lxcContainerAvailable(int features) if (features & LXC_CONTAINER_FEATURE_NET) flags |= CLONE_NEWNET; - if (VIR_ALLOC_N(stack, getpagesize() * 4) < 0) { + if (VIR_ALLOC_N(stack, stacksize) < 0) { VIR_DEBUG("Unable to allocate stack"); return -1; } - childStack = stack + (getpagesize() * 4); + childStack = stack + stacksize; cpid = clone(lxcContainerDummyChild, childStack, flags, NULL); VIR_FREE(stack); -- 1.8.2.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list