On Mon, Aug 29, 2016 at 17:56:29 -0400, John Ferlan wrote:
...
> @@ -852,7 +863,7 @@ virQEMUCapsInitGuest(virCapsPtr caps,
> * arm is different in that 32-on-64 _only_ works with
> * qemu-system-aarch64. So we have to add it to the kvmbins list
> */
> - if (arm_32on64_kvm)
> + if (hostarch == VIR_ARCH_AARCH64 && guestarch == VIR_ARCH_ARMV7L)
> kvmbins[3] = "qemu-system-aarch64";
>
> for (i = 0; i < ARRAY_CARDINALITY(kvmbins); ++i) {
>
Noted by Coverity in this module - existing I think as well, it's just
that the change piqued Coverity's interest in analyzing things...
At the top of this function we have a:
/* Ignore binary if extracting version info fails */
if (binary) {
if (!(qemubinCaps = virQEMUCapsCacheLookup(cache, binary))) {
virResetLastError();
...
Then there's the replace if condition w/ virQEMUCapsGuestIsNative
followed by a:
ret = virQEMUCapsInitGuestFromBinary(caps,
binary, qemubinCaps,
kvmbin, kvmbinCaps,
guestarch);
where it's noted that virQEMUCapsInitGuestFromBinary will dereference
qemubinCaps in the call to virQEMUCapsGetMachineTypesCaps and it's
possible that qemubinCaps is NULL if "binary" is set. The analysis
doesn't go into the virQEMUCapsGuestIsNative condition. It's also
notable that if !binary is checked in virQEMUCapsInitGuestFromBinary, so
this is somewhat of an "edge" condition.
That's impossible, see
if (binary) {
if (!(qemubinCaps = virQEMUCapsCacheLookup(cache, binary))) {
virResetLastError();
VIR_FREE(binary);
}
}
Jirka