On 22.09.2014 12:14, Jincheng Miao wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=1145050 Signed-off-by: Jincheng Miao <jmiao@xxxxxxxxxx> --- src/nodeinfo.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/nodeinfo.c b/src/nodeinfo.c index af23b8b..1728891 100644 --- a/src/nodeinfo.c +++ b/src/nodeinfo.c @@ -2028,16 +2028,34 @@ nodeGetFreePages(unsigned int npages, unsigned long long *counts) { int ret = -1; - int cell; + int cell, lastCell; size_t i, ncounts = 0; - for (cell = startCell; cell < (int) (startCell + cellCount); cell++) { + if ((lastCell = virNumaGetMaxNode()) < 0) + return 0; + + if (startCell > lastCell) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("start cell %d out of range (0-%d)"), + startCell, lastCell); + goto cleanup; + } + + lastCell = startCell + cellCount; + if (startCell + cellCount < lastCell) + lastCell = startCell + cellCount; + + for (cell = startCell; cell < lastCell; cell++) { for (i = 0; i < npages; i++) { unsigned int page_size = pages[i]; unsigned int page_free; - if (virNumaGetPageInfo(cell, page_size, 0, NULL, &page_free) < 0) + if (virNumaGetPageInfo(cell, page_size, 0, NULL, &page_free) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Failed to get %dKib page info of cell %d"), + page_size, cell);
Noo. This overwrites any error reported by virNumaGetPageInfo (which usually is much more helpful than this generic one).
goto cleanup; + } counts[ncounts++] = page_free; }
ACK with that discarded. Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list