Hi Markus & Philippe,

Thanks for reviewing this one. Please see the question below.

On 12/2/22 12:53 AM, Markus Armbruster wrote:
Philippe Mathieu-Daudé <phi...@linaro.org> writes:

On 2/12/22 03:59, Vikram Garhwal wrote:
Replace g_malloc with g_new and perror with error_setg_errno.

Signed-off-by: Vikram Garhwal <vikram.garh...@amd.com>
---
   hw/xen/xen-hvm-common.c | 15 ++++++++-------
   1 file changed, 8 insertions(+), 7 deletions(-)

@@ -717,7 +717,7 @@ void destroy_hvm_domain(bool reboot)
      xc_interface *xc_handle;
      int sts;
      int rc;
-
+    Error *errp = NULL;
      unsigned int reason = reboot ? SHUTDOWN_reboot : SHUTDOWN_poweroff;
if (xen_dmod) {
@@ -726,7 +726,7 @@ void destroy_hvm_domain(bool reboot)
              return;
          }
          if (errno != ENOTTY /* old Xen */) {
-            perror("xendevicemodel_shutdown failed");
+            error_setg_errno(&errp, errno, "xendevicemodel_shutdown failed");
See "qapi/error.h":

   * = Passing errors around =
   *
   * Errors get passed to the caller through the conventional @errp
   * parameter.

Here you are not passing the error to the caller.
Instead, you're leaking its memory.

Maybe you are looking for the "qemu/error-report.h" API?
Plausible.

Also, @errp is the conventional name for the Error ** parameter used to
pass errors to the caller.  Local Error * variables are usually called
@err or @local_err (I prefer the former).

[...]

IIUC, error_set_errno() is not okay as it needs to be called with errp from caller. But error_set(&err, "") is okay with locally defined **err = NULL;
Is that correct understanding?


Reply via email to