On Thu, 24 Oct 2019 at 16:19, Paolo Bonzini <pbonz...@redhat.com> wrote: > > From: Sergio Lopez <s...@redhat.com> > > microvm is a machine type inspired by Firecracker and constructed > after its machine model. > > It's a minimalist machine type without PCI nor ACPI support, designed > for short-lived guests. microvm also establishes a baseline for > benchmarking and optimizing both QEMU and guest operating systems, > since it is optimized for both boot time and footprint.
Hi; Coverity points out a memory leak in this commit (CID 1407218): > +static void microvm_fix_kernel_cmdline(MachineState *machine) > +{ > + X86MachineState *x86ms = X86_MACHINE(machine); > + BusState *bus; > + BusChild *kid; > + char *cmdline; > + > + /* > + * Find MMIO transports with attached devices, and add them to the kernel > + * command line. > + * > + * Yes, this is a hack, but one that heavily improves the UX without > + * introducing any significant issues. > + */ > + cmdline = g_strdup(machine->kernel_cmdline); Here we allocate memory for cmdline... > + bus = sysbus_get_default(); > + QTAILQ_FOREACH(kid, &bus->children, sibling) { > + DeviceState *dev = kid->child; > + ObjectClass *class = object_get_class(OBJECT(dev)); > + > + if (class == object_class_by_name(TYPE_VIRTIO_MMIO)) { > + VirtIOMMIOProxy *mmio = VIRTIO_MMIO(OBJECT(dev)); > + VirtioBusState *mmio_virtio_bus = &mmio->bus; > + BusState *mmio_bus = &mmio_virtio_bus->parent_obj; > + > + if (!QTAILQ_EMPTY(&mmio_bus->children)) { > + gchar *mmio_cmdline = > microvm_get_mmio_cmdline(mmio_bus->name); > + if (mmio_cmdline) { > + char *newcmd = g_strjoin(NULL, cmdline, mmio_cmdline, > NULL); > + g_free(mmio_cmdline); > + g_free(cmdline); > + cmdline = newcmd; > + } > + } > + } > + } > + > + fw_cfg_modify_i32(x86ms->fw_cfg, FW_CFG_CMDLINE_SIZE, strlen(cmdline) + > 1); > + fw_cfg_modify_string(x86ms->fw_cfg, FW_CFG_CMDLINE_DATA, cmdline); ...but fw_cfg_modify_string() takes a copy of the string it's passed, so we still have ownership of 'cmdline' and need to free it here to avoid a leak. > +} thanks -- PMM