]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: Fix a bug in virResctrlMonitorGetStats
authorWang Huaqiang <huaqiang.wang@intel.com>
Tue, 20 Nov 2018 02:10:39 +0000 (10:10 +0800)
committerJohn Ferlan <jferlan@redhat.com>
Tue, 20 Nov 2018 19:08:01 +0000 (14:08 -0500)
The path argument of virFileIsDir should be a full name
of file, pathname and filename. Fixed it by passing the
full path name to virFileIsDir.

Signed-off-by: Wang Huaqiang <huaqiang.wang@intel.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
src/util/virresctrl.c

index 7aeca9d287988c3298569015c46b62db74a633fd..b32eedc3b18f6a0a0d247ffe1c5b11b578881423 100644 (file)
@@ -2665,6 +2665,7 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr monitor,
     int ret = -1;
     DIR *dirp = NULL;
     char *datapath = NULL;
+    char *filepath = NULL;
     struct dirent *ent = NULL;
     virResctrlMonitorStatsPtr stat = NULL;
 
@@ -2684,13 +2685,18 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr monitor,
     while (virDirRead(dirp, &ent, datapath) > 0) {
         char *node_id = NULL;
 
+        VIR_FREE(filepath);
+
         /* Looking for directory that contains resource utilization
          * information file. The directory name is arranged in format
          * "mon_<node_name>_<node_id>". For example, "mon_L3_00" and
          * "mon_L3_01" are two target directories for a two nodes system
          * with resource utilization data file for each node respectively.
          */
-        if (!virFileIsDir(ent->d_name))
+        if (virAsprintf(&filepath, "%s/%s", datapath, ent->d_name) < 0)
+            goto cleanup;
+
+        if (!virFileIsDir(filepath))
             continue;
 
         /* Looking for directory has a prefix 'mon_L' */
@@ -2734,6 +2740,7 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr monitor,
     ret = 0;
  cleanup:
     VIR_FREE(datapath);
+    VIR_FREE(filepath);
     VIR_FREE(stat);
     VIR_DIR_CLOSE(dirp);
     return ret;