aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2016-07-13 02:11:59 +0200
committerMarc-André Lureau <marcandre.lureau@redhat.com>2016-09-08 18:05:21 +0400
commite305a16510afa74eec20390479e349402e55ef4c (patch)
treea7b169b1ea91349fb47db68c74e66d635a11e518 /include
parentbd794065ffffe10721b6a95f1db52f2cc7953196 (diff)
portio: keep references on portio
The isa_register_portio_list() function allocates ioports data/state. Let's keep the reference to this data on some owner. This isn't enough to fix leaks, but at least, ASAN stops complaining of direct leaks. Further cleanup would require calling portio_list_del/destroy(). Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/hw/ide/internal.h2
-rw-r--r--include/hw/isa/i8257.h2
-rw-r--r--include/hw/isa/isa.h5
3 files changed, 8 insertions, 1 deletions
diff --git a/include/hw/ide/internal.h b/include/hw/ide/internal.h
index 7824bc34ce..a6dd2c3d30 100644
--- a/include/hw/ide/internal.h
+++ b/include/hw/ide/internal.h
@@ -480,6 +480,8 @@ struct IDEBus {
uint8_t retry_unit;
int64_t retry_sector_num;
uint32_t retry_nsector;
+ PortioList portio_list;
+ PortioList portio2_list;
};
#define TYPE_IDE_DEVICE "ide-device"
diff --git a/include/hw/isa/i8257.h b/include/hw/isa/i8257.h
index aa211c0df7..88a2766a3f 100644
--- a/include/hw/isa/i8257.h
+++ b/include/hw/isa/i8257.h
@@ -36,6 +36,8 @@ typedef struct I8257State {
QEMUBH *dma_bh;
bool dma_bh_scheduled;
int running;
+ PortioList portio_page;
+ PortioList portio_pageh;
} I8257State;
#endif
diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
index 7693ac5454..c2fdd70cdc 100644
--- a/include/hw/isa/isa.h
+++ b/include/hw/isa/isa.h
@@ -134,12 +134,15 @@ void isa_register_ioport(ISADevice *dev, MemoryRegion *io, uint16_t start);
* device and use the legacy portio routines.
*
* @dev: the ISADevice against which these are registered; may be NULL.
+ * @piolist: the PortioList associated with the io ports
* @start: the base I/O port against which the portio->offset is applied.
* @portio: the ports, sorted by offset.
* @opaque: passed into the portio callbacks.
* @name: passed into memory_region_init_io.
*/
-void isa_register_portio_list(ISADevice *dev, uint16_t start,
+void isa_register_portio_list(ISADevice *dev,
+ PortioList *piolist,
+ uint16_t start,
const MemoryRegionPortio *portio,
void *opaque, const char *name);