[libvirt] [PATCH] Bug fix: Allow sysinfo to display processor information

Prerna Saxena prerna at linux.vnet.ibm.com
Tue Feb 7 11:43:07 UTC 2012


From: Prerna Saxena <prerna at linux.vnet.ibm.com>
Date: Tue, 7 Feb 2012 17:05:37 +0530
Subject: [PATCH] On systems with dmidecode version 2.10 or older,
 dmidecode displays processor information, followed by BIOS, system and
 memory-DIMM details.
 Calls to virSysinfoParseBIOS(), virSysinfoParseSystem() would update
 the buffer pointer 'base', so the processor information would be lost
 before virSysinfoParseProcessor() was called. Sysinfo would therefore
 not be able to display processor details -- It only described <bios>,
 <system> and <memory_device> details.
 This patch attempts to insulate sysinfo from ordering of dmidecode
 output.

Before the fix:
---------------
virsh # sysinfo
<sysinfo type='smbios'>
  <bios>
    ....
  </bios>
  <system>
    ....
  </system>
  <memory_device>
    ....
  </memory_device>

After the fix:
-------------
virsh # sysinfo
<sysinfo type='smbios'>
  <bios>
    ....
  </bios>
  <system>
    ....
  </system>
  <processor>
    ....
  </processor>
  <memory_device>
    ....
  </memory_device>
---
 src/util/sysinfo.c |   12 +++++-------
 1 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/src/util/sysinfo.c b/src/util/sysinfo.c
index de3108a..0e55d7e 100644
--- a/src/util/sysinfo.c
+++ b/src/util/sysinfo.c
@@ -453,7 +453,7 @@ no_memory:
 
 virSysinfoDefPtr
 virSysinfoRead(void) {
-    char *path, *base;
+    char *path;
     virSysinfoDefPtr ret = NULL;
     char *outbuf = NULL;
     virCommandPtr cmd;
@@ -481,22 +481,20 @@ virSysinfoRead(void) {
 
     ret->type = VIR_SYSINFO_SMBIOS;
 
-    base = outbuf;
-
-    if ((base = virSysinfoParseBIOS(base, ret)) == NULL)
+    if ((virSysinfoParseBIOS(outbuf, ret)) == NULL)
         goto no_memory;
 
-    if ((base = virSysinfoParseSystem(base, ret)) == NULL)
+    if ((virSysinfoParseSystem(outbuf, ret)) == NULL)
         goto no_memory;
 
     ret->nprocessor = 0;
     ret->processor = NULL;
-    if ((base = virSysinfoParseProcessor(base, ret)) == NULL)
+    if ((virSysinfoParseProcessor(outbuf, ret)) == NULL)
         goto no_memory;
 
     ret->nmemory = 0;
     ret->memory = NULL;
-    if (virSysinfoParseMemory(base, ret) == NULL)
+    if (virSysinfoParseMemory(outbuf, ret) == NULL)
         goto no_memory;
 
 cleanup:
-- 
1.7.3.1


-- 
Prerna Saxena

Linux Technology Centre,
IBM Systems and Technology Lab,
Bangalore, India




More information about the libvir-list mailing list