mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-05 05:45:46 +00:00
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:
parent
143d2e9bde
commit
b46ec55d53
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user