[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH 2/3] nodeinfo: report error when given node is out of range



On 22.09.2014 12:14, Jincheng Miao wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=1145050

Signed-off-by: Jincheng Miao <jmiao 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]