[libvirt] [PATCH 2/3] nodeinfo: report error when given node is out of range
Michal Privoznik
mprivozn at redhat.com
Tue Sep 23 08:28:58 UTC 2014
On 22.09.2014 12:14, Jincheng Miao wrote:
> https://bugzilla.redhat.com/show_bug.cgi?id=1145050
>
> Signed-off-by: Jincheng Miao <jmiao at redhat.com>
> ---
> 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
More information about the libvir-list
mailing list