[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: |
Wed, 23 Sep 2015 14:20:20 +0200 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 |
On 22.09.2015 16:59, Marc-André Lureau wrote:
> Hi
>
> ----- Original Message -----
>> 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?
>
> How would it be useful during debugging? Once the memory is mapped there
> isn't much you can do with it, it's just keeping a fd open, isn't it?
all right.
>
>>
>> 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 38/46] msix: implement pba write (but read-only), (continued)
- [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
- [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
- [Qemu-devel] [PATCH v3 45/46] ivshmem: rename MSI eventfd_table, marcandre . lureau, 2015/09/15