If we are running on a system that is not capable of huge pages (e.g. because the kernel is not configured that way) we still try to open "/sys/kernel/mm/hugepages/" which however does not exist. We should be tolerant to this specific use case. Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- src/util/virnuma.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/util/virnuma.c b/src/util/virnuma.c index a176852..4901378 100644 --- a/src/util/virnuma.c +++ b/src/util/virnuma.c @@ -738,7 +738,7 @@ virNumaGetPages(int node, int ret = -1; char *path = NULL; DIR *dir = NULL; - int direrr; + int direrr = 0; struct dirent *entry; unsigned int *tmp_size = NULL, *tmp_avail = NULL, *tmp_free = NULL; unsigned int ntmp = 0; @@ -760,13 +760,17 @@ virNumaGetPages(int node, goto cleanup; if (!(dir = opendir(path))) { - virReportSystemError(errno, - _("unable to open path: %s"), - path); - goto cleanup; + /* It's okay if the @path doesn't exist. Maybe we are running on + * system without huge pages support where the path may not exist. */ + if (errno != ENOENT) { + virReportSystemError(errno, + _("unable to open path: %s"), + path); + goto cleanup; + } } - while ((direrr = virDirRead(dir, &entry, path)) > 0) { + while (dir && (direrr = virDirRead(dir, &entry, path)) > 0) { const char *page_name = entry->d_name; unsigned int page_size, page_avail = 0, page_free = 0; char *end; -- 1.8.5.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list