qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* Memory leak in transfer_memory_block()?
@ 2020-06-18  5:35 Markus Armbruster
  2020-06-18  6:49 ` Zhanghailiang
  0 siblings, 1 reply; 3+ messages in thread
From: Markus Armbruster @ 2020-06-18  5:35 UTC (permalink / raw)
  To: Hailiang Zhang; +Cc: qemu-devel, Michael Roth

We appear to leak an Error object when ga_read_sysfs_file() fails with
errno != ENOENT unless caller passes true @sys2memblk:

    static void transfer_memory_block(GuestMemoryBlock *mem_blk, bool sys2memblk,
                                      GuestMemoryBlockResponse *result,
                                      Error **errp)
    {
        [...]
        if (local_err) {

We have an Error object.

            /* treat with sysfs file that not exist in old kernel */
            if (errno == ENOENT) {

Case 1: ENOENT; we free it.  Good.

                error_free(local_err);
                if (sys2memblk) {
                    mem_blk->online = true;
                    mem_blk->can_offline = false;
                } else if (!mem_blk->online) {
                    result->response =
                        GUEST_MEMORY_BLOCK_RESPONSE_TYPE_OPERATION_NOT_SUPPORTED;
                }
            } else {

Case 2: other than ENOENT

                if (sys2memblk) {

Case 2a: sys2memblk; we pass it to the caller.  Good.

                    error_propagate(errp, local_err);
                } else {

Case 2b: !sys2memblk; ???

                    result->response =
                        GUEST_MEMORY_BLOCK_RESPONSE_TYPE_OPERATION_FAILED;
                }
            }
            goto out2;
        }
        [...]
    out2:
        g_free(status);
        close(dirfd);
    out1:
        if (!sys2memblk) {
            result->has_error_code = true;
            result->error_code = errno;
        }
    }

What is supposed to be done with @local_err in case 2b?



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-06-22  8:23 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-18  5:35 Memory leak in transfer_memory_block()? Markus Armbruster
2020-06-18  6:49 ` Zhanghailiang
2020-06-22  8:23   ` Markus Armbruster

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).