[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 41/46] ivshmem: do not keep shm_fd open
From: |
Claudio Fontana |
Subject: |
Re: [Qemu-devel] [PATCH v3 41/46] ivshmem: do not keep shm_fd open |
Date: |
Tue, 22 Sep 2015 16:36:36 +0200 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 |
On 15.09.2015 18:07, address@hidden wrote:
> From: Marc-André Lureau <address@hidden>
>
> Remove shm_fd from device state, closing it as early as possible to avoid
> leaks.
>
> Signed-off-by: Marc-André Lureau <address@hidden>
> ---
> hw/misc/ivshmem.c | 14 +++++---------
> 1 file changed, 5 insertions(+), 9 deletions(-)
>
> diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
> index 4adcac5..f9ac955 100644
> --- a/hw/misc/ivshmem.c
> +++ b/hw/misc/ivshmem.c
> @@ -88,7 +88,6 @@ typedef struct IVShmemState {
> MemoryRegion ivshmem;
> uint64_t ivshmem_size; /* size of shared memory region */
> uint32_t ivshmem_64bit;
> - int shm_fd; /* shared memory file descriptor */
is it in no way useful during debugging to have access to this field?
Or is it easily available elsewhere?
Ciao C.
>
> Peer *peers;
> int nb_peers; /* how many peers we have space for */
> @@ -235,7 +234,7 @@ static uint64_t ivshmem_io_read(void *opaque, hwaddr addr,
>
> case IVPOSITION:
> /* return my VM ID if the memory is mapped */
> - if (s->shm_fd >= 0) {
> + if (memory_region_is_mapped(&s->ivshmem)) {
> ret = s->vm_id;
> } else {
> ret = -1;
> @@ -356,8 +355,6 @@ static int create_shared_memory_BAR(IVShmemState *s, int
> fd, uint8_t attr,
> return -1;
> }
>
> - s->shm_fd = fd;
> -
> memory_region_init_ram_ptr(&s->ivshmem, OBJECT(s), "ivshmem.bar2",
> s->ivshmem_size, ptr);
> vmstate_register_ram(&s->ivshmem, DEVICE(s));
> @@ -535,7 +532,7 @@ static void ivshmem_read(void *opaque, const uint8_t
> *buf, int size)
> if (incoming_posn == -1) {
> void * map_ptr;
>
> - if (s->shm_fd >= 0) {
> + if (memory_region_is_mapped(&s->ivshmem)) {
> error_report("shm already initialized");
> close(incoming_fd);
> return;
> @@ -564,9 +561,7 @@ static void ivshmem_read(void *opaque, const uint8_t
> *buf, int size)
>
> memory_region_add_subregion(&s->bar, 0, &s->ivshmem);
>
> - /* only store the fd if it is successfully mapped */
> - s->shm_fd = incoming_fd;
> -
> + close(incoming_fd);
> return;
> }
>
> @@ -827,6 +822,7 @@ static void pci_ivshmem_realize(PCIDevice *dev, Error
> **errp)
> }
>
> create_shared_memory_BAR(s, fd, attr, errp);
> + close(fd);
> }
> }
>
> @@ -842,7 +838,7 @@ static void pci_ivshmem_exit(PCIDevice *dev)
> error_free(s->migration_blocker);
> }
>
> - if (s->shm_fd >= 0) {
> + if (memory_region_is_mapped(&s->ivshmem)) {
> void *addr = memory_region_get_ram_ptr(&s->ivshmem);
>
> vmstate_unregister_ram(&s->ivshmem, DEVICE(dev));
>
- [Qemu-devel] [PATCH v3 35/46] docs: update ivshmem device spec, (continued)
- [Qemu-devel] [PATCH v3 35/46] docs: update ivshmem device spec, marcandre . lureau, 2015/09/15
- [Qemu-devel] [PATCH v3 36/46] ivshmem: add check on protocol version in QEMU, marcandre . lureau, 2015/09/15
- [Qemu-devel] [PATCH v3 38/46] msix: implement pba write (but read-only), marcandre . lureau, 2015/09/15
- [Qemu-devel] [PATCH v3 37/46] contrib: remove unnecessary strdup(), marcandre . lureau, 2015/09/15
- [Qemu-devel] [PATCH v3 39/46] qtest: add qtest_add_abrt_handler(), marcandre . lureau, 2015/09/15
- [Qemu-devel] [PATCH v3 40/46] tests: add ivshmem qtest, marcandre . lureau, 2015/09/15
- [Qemu-devel] [PATCH v3 41/46] ivshmem: do not keep shm_fd open, marcandre . lureau, 2015/09/15
- Re: [Qemu-devel] [PATCH v3 41/46] ivshmem: do not keep shm_fd open,
Claudio Fontana <=
- [Qemu-devel] [PATCH v3 42/46] ivshmem: make ivshmem_get_size() more generic, marcandre . lureau, 2015/09/15
- [Qemu-devel] [PATCH v3 43/46] ivshmem: add hostmem backend, marcandre . lureau, 2015/09/15
- [Qemu-devel] [PATCH v3 44/46] ivshmem: remove EventfdEntry.vector, marcandre . lureau, 2015/09/15