From: Sergio Lopez <slp@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [PULL 20/39] hw/i386: Introduce the microvm machine type
Date: Tue, 12 Nov 2019 12:57:02 +0100 [thread overview]
Message-ID: <87y2wls3xt.fsf@redhat.com> (raw)
In-Reply-To: <CAFEAcA-wqep+Lq93Ps=d6Cgx9bbYSNCcankbdvzoGz5T2P1_YA@mail.gmail.com>
Peter Maydell <peter.maydell@linaro.org> writes:
> On Thu, 24 Oct 2019 at 16:19, Paolo Bonzini <pbonzini@redhat.com> wrote:
>>
>> From: Sergio Lopez <slp@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.
Ack, will send a patch ASAP.
Thanks,
Sergio.
>> +}
>
> thanks
> -- PMM
next prev parent reply other threads:[~2019-11-12 11:57 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-24 14:03 [PULL 00/39] Misc (mostly x86) patches for 2019-10-24 Paolo Bonzini
2019-10-24 14:03 ` [PULL 01/39] target/i386: log MCE guest and host addresses Paolo Bonzini
2019-10-24 14:03 ` [PULL 02/39] mc146818rtc: fix timer interrupt reinjection Paolo Bonzini
2019-10-24 14:03 ` [PULL 03/39] Updated Bulgarian translation (19) - 4.1.0 Paolo Bonzini
2019-10-24 19:54 ` Aleksandar Markovic
2019-10-24 20:19 ` Paolo Bonzini
2019-10-24 14:03 ` [PULL 04/39] i386/kvm: add NoNonArchitecturalCoreSharing Hyper-V enlightenment Paolo Bonzini
2019-10-24 14:03 ` [PULL 05/39] Do not use %m in common code to print error messages Paolo Bonzini
2019-10-24 14:03 ` [PULL 06/39] memory-device: simplify Makefile.objs conditions Paolo Bonzini
2019-10-24 14:03 ` [PULL 07/39] hw/virtio: Factorize virtio-mmio headers Paolo Bonzini
2019-10-24 14:03 ` [PULL 08/39] hw/i386/pc: rename functions shared with non-PC machines Paolo Bonzini
2019-10-24 14:03 ` [PULL 09/39] hw/i386/pc: fix code style issues on functions that will be moved out Paolo Bonzini
2019-10-24 14:03 ` [PULL 10/39] hw/i386/pc: replace use of strtol with qemu_strtoui in x86_load_linux() Paolo Bonzini
2019-10-24 14:03 ` [PULL 11/39] hw/i386/pc: avoid an assignment in if condition " Paolo Bonzini
2019-10-24 14:03 ` [PULL 12/39] hw/i386/pc: remove commented out code from x86_load_linux() Paolo Bonzini
2019-10-24 14:03 ` [PULL 13/39] hw/i386/pc: move shared x86 functions to x86.c and export them Paolo Bonzini
2019-10-24 14:03 ` [PULL 14/39] hw/i386: split PCMachineState deriving X86MachineState from it Paolo Bonzini
2019-10-24 14:03 ` [PULL 15/39] hw/i386: make x86.c independent from PCMachineState Paolo Bonzini
2019-10-24 14:03 ` [PULL 16/39] fw_cfg: add "modify" functions for all types Paolo Bonzini
2019-10-24 14:03 ` [PULL 17/39] hw/intc/apic: reject pic ints if isa_pic == NULL Paolo Bonzini
2019-10-24 14:03 ` [PULL 18/39] roms: add microvm-bios (qboot) as binary and git submodule Paolo Bonzini
2019-10-24 14:03 ` [PULL 19/39] docs/microvm.rst: document the new microvm machine type Paolo Bonzini
2019-10-24 14:03 ` [PULL 20/39] hw/i386: Introduce the " Paolo Bonzini
2019-11-12 10:18 ` Peter Maydell
2019-11-12 11:57 ` Sergio Lopez [this message]
2019-10-24 14:03 ` [PULL 21/39] MAINTAINERS: add microvm related files Paolo Bonzini
2019-10-24 14:03 ` [PULL 22/39] checkpatch: suggest qemu_real_host_page_size instead of getpagesize() or sysconf(_SC_PAGESIZE) Paolo Bonzini
2019-10-24 14:03 ` [PULL 23/39] runstate: ignore exit request in finish migrate state Paolo Bonzini
2019-10-24 14:03 ` [PULL 24/39] hw/timer/mc146818rtc: Only include qapi-commands-misc on I386 Paolo Bonzini
2019-10-24 14:03 ` [PULL 25/39] x86/cpu: Add support for UMONITOR/UMWAIT/TPAUSE Paolo Bonzini
2019-10-24 14:03 ` [PULL 26/39] target/i386: Add support for save/load IA32_UMWAIT_CONTROL MSR Paolo Bonzini
2019-10-24 14:03 ` [PULL 27/39] hw/i386/pc: Extract pc_gsi_create() Paolo Bonzini
2019-10-24 14:03 ` [PULL 28/39] hw/i386/pc: Move gsi_state creation code Paolo Bonzini
2019-10-24 14:03 ` [PULL 29/39] hw/i386/pc: Extract pc_i8259_create() Paolo Bonzini
2019-10-24 14:03 ` [PULL 30/39] hw/i386/pc: Remove kvm_i386.h include Paolo Bonzini
2019-10-24 14:03 ` [PULL 31/39] mc146818rtc: move structure to header file Paolo Bonzini
2019-10-24 14:03 ` [PULL 32/39] mc146818rtc: Move RTC_ISA_IRQ definition Paolo Bonzini
2019-10-24 14:03 ` [PULL 33/39] mc146818rtc: Include mc146818rtc_regs.h directly in mc146818rtc.c Paolo Bonzini
2019-10-24 14:03 ` [PULL 34/39] mc146818rtc: always register rtc to rtc list Paolo Bonzini
2019-10-24 14:03 ` [PULL 35/39] audio: fix missing break Paolo Bonzini
2019-10-24 15:14 ` Philippe Mathieu-Daudé
2019-10-24 16:02 ` Paolo Bonzini
2019-10-24 14:03 ` [PULL 36/39] core: replace getpagesize() with qemu_real_host_page_size Paolo Bonzini
2019-10-24 14:03 ` [PULL 37/39] target/i386: move FERR handling to target/i386 Paolo Bonzini
2019-10-24 14:03 ` [PULL 38/39] target/i386: introduce cpu_set_fpus Paolo Bonzini
2019-10-24 14:03 ` [PULL 39/39] i386: implement IGNNE Paolo Bonzini
2019-10-25 8:43 ` [PULL 00/39] Misc (mostly x86) patches for 2019-10-24 no-reply
2019-10-25 10:46 ` Peter Maydell
2019-10-25 11:17 ` Paolo Bonzini
2019-10-26 13:20 ` Philippe Mathieu-Daudé
2019-10-26 13:39 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87y2wls3xt.fsf@redhat.com \
--to=slp@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.