qemuDomainGetGuestInfo: Exit early if getting info fails

If there is an error getting info from guest agent, then the
control on qemuDomainGetGuestInfo() jumps onto 'exitagent' label
and subsequently continues on 'endagentjob'. Both labels are hit
also in success case too. The control then continues by
attempting to match fetched info (e.g. disk addresses) with
domain def. But this is needless - the API will return error
regardless.

To return early from the function move both 'exitagent' and
'endagentjob' labels at the end of the function and jump straight
onto 'cleanup' afterwards. This allows us to set 'ret = 0' later
- only when we know we succeeded.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Michal Privoznik 2020-12-01 11:47:13 +01:00
parent 143d2e9bde
commit b46ec55d53

View File

@ -20116,12 +20116,7 @@ qemuDomainGetGuestInfo(virDomainPtr dom,
}
}
ret = 0;
exitagent:
qemuDomainObjExitAgent(vm, agent);
endagentjob:
qemuDomainObjEndAgentJob(vm);
if (nfs > 0 || ndisks > 0) {
@ -20143,6 +20138,8 @@ qemuDomainGetGuestInfo(virDomainPtr dom,
qemuDomainObjEndJob(driver, vm);
}
ret = 0;
cleanup:
for (i = 0; i < nfs; i++)
qemuAgentFSInfoFree(agentfsinfo[i]);
@ -20153,6 +20150,13 @@ qemuDomainGetGuestInfo(virDomainPtr dom,
virDomainObjEndAPI(&vm);
return ret;
exitagent:
qemuDomainObjExitAgent(vm, agent);
endagentjob:
qemuDomainObjEndAgentJob(vm);
goto cleanup;
}