diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c index a226e4d94a5efb4b3f78182d08937e6f7d8bef0b..3d90c87e86b6cae7426681a4d2d31bca6630c071 100644 --- a/src/lxc/lxc_container.c +++ b/src/lxc/lxc_container.c @@ -1044,10 +1044,11 @@ static int lxcContainerGetSubtree(const char *prefix, virReportOOMError(); goto cleanup; } - if (!(mounts[nmounts++] = strdup(mntent.mnt_dir))) { + if (!(mounts[nmounts] = strdup(mntent.mnt_dir))) { virReportOOMError(); goto cleanup; } + nmounts++; VIR_DEBUG("Grabbed %s", mntent.mnt_dir); } @@ -1055,11 +1056,10 @@ static int lxcContainerGetSubtree(const char *prefix, qsort(mounts, nmounts, sizeof(mounts[0]), lxcContainerChildMountSort); - *mountsret = mounts; - *nmountsret = nmounts; ret = 0; - cleanup: + *mountsret = mounts; + *nmountsret = nmounts; endmntent(procmnt); return ret; } @@ -1077,7 +1077,7 @@ static int lxcContainerUnmountSubtree(const char *prefix, VIR_DEBUG("Unmount subtreee from %s", prefix); if (lxcContainerGetSubtree(prefix, &mounts, &nmounts) < 0) - return -1; + goto cleanup; for (i = 0 ; i < nmounts ; i++) { VIR_DEBUG("Umount %s", mounts[i]); if (umount(mounts[i]) < 0) {