[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