qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH for-2.7 v4 00/36] Various memory leak fixes


From: marcandre . lureau
Subject: [Qemu-devel] [PATCH for-2.7 v4 00/36] Various memory leak fixes
Date: Fri, 5 Aug 2016 12:23:45 +0400

From: Marc-André Lureau <address@hidden>

Hi,

Thanks to AddressSanitizer (ASAN), I found a number of direct leaks
worth fixing. Note that there are probably many indirect leaks left (I
am adding some here), I haven't investigated much yet.

There are still a number of direct leaks remaining, in particular in
the tests, but my libc doesn't give me good backtraces.

In order to easily switch to asan-enabled build, I make use of make
CFLAGS argument, which is why the first patch is also there.

v4:
- document qtest_add_data_func_full seperately
- add g_(s)list_free_full in glib-compat
- simplify tcp_chr_close()
- move dma_buf_commit() down before the early return case
- dropped a qdist leak patch already applied

v3:
- add glib<2.34 fallback for g_test_add_data_func_full() using
  g_test_add_vtable() with an explicit comment
- add and use a tcp_chr_free_connection(), from tcp_chr_disconnect()
  (suggested by Paolo)
- remove bad comment from "free MuxDriver" patch (Eric)
- replace GFunc casts with a qemu_g_func_free() inline (suggested by Eric)
- replace CFLAGS override patch with a toplevel CFLAGS filter
  (suggested by Paolo)
- drop a patch already merged upstream
- update reviewed-by tags (28/36)

v2:
- split "pci-bus: do not allocate and leak bsel" as a seperate patch,
  since the direct leak looks like a bug
- hook virtio_input_finalize to the abstract base class
- use mkdtemp in test-io-channel-command
- fix pc-cpu-test commit message
- move the sglist destruction inside of ncq_err, call dma_buf_commit
  in ide_dma_cb, as suggested by John Snow
- fix build with glib 2.22
- add the given reviewed-by tags (22/37, 15 left)

Marc-André Lureau (36):
  build-sys: fix building with make CFLAGS=.. argument
  tests: fix test-qga leaks
  glib-compat: add g_(s)list_free_full()
  qga: free the whole blacklist
  qga: free remaining leaking state
  tests: fix test-cutils leaks
  tests: fix test-vmstate leaks
  tests: fix test-iov leaks
  tests: fix check-qom-interface leaks
  tests: fix check-qom-proplist leaks
  tests: fix small leak in test-io-channel-command
  tests: fix leak in test-string-input-visitor
  portio: keep references on portio
  numa: do not leak NumaOptions
  pc: simplify passing qemu_irq
  pc: don't leak a20_line
  machine: use class base init generated name
  acpi-build: fix array leak
  char: free the tcp connection data when closing
  char: free MuxDriver when closing
  tests: fix qom-test leaks
  pc: free i8259
  pc: keep gsi reference
  ahci: free irqs array
  sd: free timer
  qjson: free str
  virtio-input: free config list
  ipmi: free extern timer
  usb: free USBDevice.strings
  usb: free leaking path
  bus: simplify name handling
  tests: add qtest_add_data_func_full
  tests: pc-cpu-test leaks fixes
  tests: fix rsp leak in postcopy-test
  ahci: fix sglist leak on retry
  tests: fix postcopy-test leaks

 Makefile                          |  3 +-
 hw/audio/gus.c                    |  9 ++++--
 hw/audio/sb16.c                   |  4 ++-
 hw/block/fdc.c                    |  4 ++-
 hw/char/parallel.c                |  3 +-
 hw/core/bus.c                     | 21 ++++----------
 hw/core/machine.c                 |  1 +
 hw/display/vga-isa.c              |  8 ++++--
 hw/dma/i8257.c                    |  6 ++--
 hw/i386/acpi-build.c              |  4 +--
 hw/i386/pc.c                      |  9 +++---
 hw/i386/pc_piix.c                 | 17 ++++++------
 hw/i386/pc_q35.c                  | 15 +++++-----
 hw/ide/ahci.c                     |  4 +--
 hw/ide/core.c                     |  7 +++--
 hw/input/pckbd.c                  |  4 +--
 hw/input/virtio-input.c           | 11 ++++++++
 hw/ipmi/ipmi_bmc_extern.c         |  9 ++++++
 hw/isa/isa-bus.c                  | 14 ++++------
 hw/sd/sd.c                        |  9 ++++++
 hw/usb/bus.c                      |  7 +++++
 hw/usb/desc.c                     |  1 +
 include/glib-compat.h             | 24 ++++++++++++++++
 include/hw/boards.h               |  2 +-
 include/hw/i386/pc.h              |  4 +--
 include/hw/ide/internal.h         |  2 ++
 include/hw/isa/i8257.h            |  2 ++
 include/hw/isa/isa.h              |  5 +++-
 include/hw/qdev-core.h            |  2 +-
 migration/qjson.c                 |  1 +
 numa.c                            | 15 +++++-----
 pc-bios/optionrom/Makefile        |  2 --
 qemu-char.c                       | 58 ++++++++++++++++++++++++++-------------
 qga/guest-agent-command-state.c   |  6 ++++
 qga/guest-agent-core.h            |  1 +
 qga/main.c                        | 13 +++++----
 tests/check-qom-interface.c       |  1 +
 tests/check-qom-proplist.c        | 16 +++++++++++
 tests/libqtest.c                  | 15 ++++++++++
 tests/libqtest.h                  | 17 ++++++++++++
 tests/pc-cpu-test.c               | 24 ++++++++++++----
 tests/postcopy-test.c             |  7 +++--
 tests/qom-test.c                  |  5 ++--
 tests/test-cutils.c               | 24 ++++++++++------
 tests/test-io-channel-command.c   | 20 +++++++++-----
 tests/test-iov.c                  |  7 +++++
 tests/test-qga.c                  |  8 +++++-
 tests/test-string-input-visitor.c |  1 +
 tests/test-vmstate.c              |  8 ++++--
 49 files changed, 331 insertions(+), 129 deletions(-)

-- 
2.9.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]