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

[xen staging] tools/libxg: Fix uninitialised variable in write_x86_cpu_policy_records()



commit 60773532231d3b6ecdc98913832ca78c3d9a4371
Author:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Thu Feb 11 14:25:57 2021 +0000
Commit:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Wed Feb 17 12:37:08 2021 +0000

    tools/libxg: Fix uninitialised variable in write_x86_cpu_policy_records()
    
    Various version of gcc, when compiling with -Og, complain:
    
      xg_sr_common_x86.c: In function 'write_x86_cpu_policy_records':
      xg_sr_common_x86.c:92:12: error: 'rc' may be used uninitialized in this 
function [-Werror=maybe-uninitialized]
         92 |     return rc;
            |            ^~
    
    The complaint is legitimate, and can occur with unexpected behaviour of two
    related hypercalls in combination with a libc which permits zero-length
    malloc()s.
    
    Have an explicit rc = 0 on the success path, and make the MSRs record error
    handling consistent with the CPUID record before it.
    
    Fixes: f6b2b8ec53d ("libxc/save: Write X86_{CPUID,MSR}_DATA records")
    Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
    Release-Acked-by: Ian Jackson <iwj@xxxxxxxxxxxxxx>
---
 tools/libs/guest/xg_sr_common_x86.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tools/libs/guest/xg_sr_common_x86.c 
b/tools/libs/guest/xg_sr_common_x86.c
index 6f12483907..3168c5485f 100644
--- a/tools/libs/guest/xg_sr_common_x86.c
+++ b/tools/libs/guest/xg_sr_common_x86.c
@@ -83,7 +83,13 @@ int write_x86_cpu_policy_records(struct xc_sr_context *ctx)
 
     msrs.length = nr_msrs * sizeof(xen_msr_entry_t);
     if ( msrs.length )
+    {
         rc = write_record(ctx, &msrs);
+        if ( rc )
+            goto out;
+    }
+
+    rc = 0;
 
  out:
     free(cpuid.data);
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.