From: Claudio Fontana <claudio.fontana@huawei.com>
To: "Marc-André Lureau" <mlureau@redhat.com>
Cc: marcandre lureau <marcandre.lureau@redhat.com>,
drjones@redhat.com, cam@cs.ualberta.ca, qemu-devel@nongnu.org,
stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH v3 41/46] ivshmem: do not keep shm_fd open
Date: Wed, 23 Sep 2015 14:20:20 +0200 [thread overview]
Message-ID: <56029904.8000101@huawei.com> (raw)
In-Reply-To: <999019625.15207582.1442933948058.JavaMail.zimbra@redhat.com>
On 22.09.2015 16:59, Marc-André Lureau wrote:
> Hi
>
> ----- Original Message -----
>> On 15.09.2015 18:07, marcandre.lureau@redhat.com wrote:
>>> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>>>
>>> Remove shm_fd from device state, closing it as early as possible to avoid
>>> leaks.
>>>
>>> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>>> ---
>>> 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));
>>>
next prev parent reply other threads:[~2015-09-23 12:20 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-15 16:07 [Qemu-devel] [PATCH v3 00/46] ivshmem improvements (please review) marcandre.lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 01/46] char: add qemu_chr_free() marcandre.lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 02/46] msix: add VMSTATE_MSIX_TEST marcandre.lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 03/46] ivhsmem: read do not accept more than sizeof(long) marcandre.lureau
2015-09-16 9:27 ` Claudio Fontana
2015-09-16 9:33 ` Marc-André Lureau
2015-09-16 11:27 ` Claudio Fontana
2015-09-16 12:03 ` Marc-André Lureau
2015-09-16 12:51 ` Paolo Bonzini
2015-09-16 13:05 ` Claudio Fontana
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 04/46] ivshmem: fix number of bytes to push to fifo marcandre.lureau
2015-09-16 9:28 ` Claudio Fontana
2015-09-23 10:17 ` Marc-André Lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 05/46] ivshmem: factor out the incoming fifo handling marcandre.lureau
2015-09-22 14:01 ` Claudio Fontana
2015-09-23 10:18 ` Marc-André Lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 06/46] ivshmem: remove unnecessary dup() marcandre.lureau
2015-09-22 14:06 ` Claudio Fontana
2015-09-22 15:29 ` Marc-André Lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 07/46] ivshmem: remove superflous ivshmem_attr field marcandre.lureau
2015-09-16 9:25 ` Claudio Fontana
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 08/46] ivshmem: remove useless doorbell field marcandre.lureau
2015-09-22 13:50 ` Claudio Fontana
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 09/46] ivshmem: more qdev conversion marcandre.lureau
2015-09-22 14:00 ` Claudio Fontana
2015-09-23 10:22 ` Marc-André Lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 10/46] ivshmem: remove last exit(1) marcandre.lureau
2015-09-22 13:55 ` Claudio Fontana
2015-09-22 13:58 ` Claudio Fontana
2015-09-22 14:00 ` Marc-André Lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 11/46] ivshmem: limit maximum number of peers to G_MAXUINT16 marcandre.lureau
2015-09-22 14:09 ` Claudio Fontana
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 12/46] ivshmem: simplify around increase_dynamic_storage() marcandre.lureau
2015-09-22 14:10 ` Claudio Fontana
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 13/46] ivshmem: allocate eventfds in resize_peers() marcandre.lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 14/46] ivshmem: remove useless ivshmem_update_irq() val argument marcandre.lureau
2015-09-22 14:13 ` Claudio Fontana
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 15/46] ivshmem: initialize max_peer to -1 marcandre.lureau
2015-09-22 14:13 ` Claudio Fontana
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 16/46] ivshmem: remove max_peer field marcandre.lureau
2015-09-16 9:39 ` Claudio Fontana
2015-09-16 9:40 ` Marc-André Lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 17/46] ivshmem: improve debug messages marcandre.lureau
2015-09-22 14:23 ` Claudio Fontana
2015-09-23 10:29 ` Marc-André Lureau
2015-09-23 12:10 ` Claudio Fontana
2015-09-23 15:45 ` Marc-André Lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 18/46] ivshmem: improve error marcandre.lureau
2015-09-22 14:26 ` Claudio Fontana
2015-09-23 10:30 ` Marc-André Lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 19/46] ivshmem: print error on invalid peer id marcandre.lureau
2015-09-22 14:27 ` Claudio Fontana
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 20/46] ivshmem: simplify a bit the code marcandre.lureau
2015-09-22 14:32 ` Claudio Fontana
2015-09-22 14:56 ` Marc-André Lureau
2015-09-23 12:18 ` Claudio Fontana
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 21/46] ivshmem: use common return marcandre.lureau
2015-09-16 11:30 ` Claudio Fontana
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 22/46] ivshmem: use common is_power_of_2() marcandre.lureau
2015-09-16 11:31 ` Claudio Fontana
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 23/46] ivshmem: migrate with VMStateDescription marcandre.lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 24/46] ivshmem: shmfd can be 0 marcandre.lureau
2015-09-16 11:33 ` Claudio Fontana
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 25/46] ivshmem: check shm isn't already initialized marcandre.lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 26/46] ivshmem: add device description marcandre.lureau
2015-09-16 11:38 ` Claudio Fontana
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 27/46] ivshmem: fix pci_ivshmem_exit() marcandre.lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 28/46] ivshmem: replace 'guest' for 'peer' appropriately marcandre.lureau
2015-09-16 11:44 ` Claudio Fontana
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 29/46] ivshmem: error on too many eventfd received marcandre.lureau
2015-09-16 12:14 ` Claudio Fontana
2015-09-23 10:47 ` Marc-André Lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 30/46] ivshmem: reset mask on device reset marcandre.lureau
2015-09-16 12:15 ` Claudio Fontana
2015-09-23 10:48 ` Marc-André Lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 31/46] contrib: add ivshmem client and server marcandre.lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 32/46] ivshmem-client: check the number of vectors marcandre.lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 33/46] ivshmem-server: use a uint16 for client ID marcandre.lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 34/46] ivshmem-server: fix hugetlbfs support marcandre.lureau
2015-09-16 16:07 ` Vladimir Sementsov-Ogievskiy
2015-09-16 16:14 ` Marc-André Lureau
2015-09-17 8:52 ` Vladimir Sementsov-Ogievskiy
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 35/46] docs: update ivshmem device spec marcandre.lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 36/46] ivshmem: add check on protocol version in QEMU marcandre.lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 37/46] contrib: remove unnecessary strdup() marcandre.lureau
2015-09-17 9:01 ` Vladimir Sementsov-Ogievskiy
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 38/46] msix: implement pba write (but read-only) marcandre.lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 39/46] qtest: add qtest_add_abrt_handler() marcandre.lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 40/46] tests: add ivshmem qtest marcandre.lureau
2015-09-22 14:44 ` Claudio Fontana
2015-09-23 11:24 ` Marc-André Lureau
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 41/46] ivshmem: do not keep shm_fd open marcandre.lureau
2015-09-22 14:36 ` Claudio Fontana
2015-09-22 14:59 ` Marc-André Lureau
2015-09-23 12:20 ` Claudio Fontana [this message]
2015-09-15 16:07 ` [Qemu-devel] [PATCH v3 42/46] ivshmem: make ivshmem_get_size() more generic marcandre.lureau
2015-09-16 15:23 ` Vladimir Sementsov-Ogievskiy
2015-09-16 15:24 ` Vladimir Sementsov-Ogievskiy
2015-09-16 15:26 ` Marc-André Lureau
2015-09-15 16:08 ` [Qemu-devel] [PATCH v3 43/46] ivshmem: add hostmem backend marcandre.lureau
2015-09-22 14:49 ` Claudio Fontana
2015-09-15 16:08 ` [Qemu-devel] [PATCH v3 44/46] ivshmem: remove EventfdEntry.vector marcandre.lureau
2015-09-22 14:59 ` Claudio Fontana
2015-09-22 15:18 ` Marc-André Lureau
2015-09-15 16:08 ` [Qemu-devel] [PATCH v3 45/46] ivshmem: rename MSI eventfd_table marcandre.lureau
2015-09-15 16:08 ` [Qemu-devel] [PATCH v3 46/46] ivshmem: use kvm irqfd for msi notifications marcandre.lureau
2015-09-16 12:47 ` [Qemu-devel] [PATCH v3 00/46] ivshmem improvements (please review) Claudio Fontana
2015-09-16 16:52 ` Vladimir Sementsov-Ogievskiy
2015-09-16 20:34 ` Marc-André Lureau
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=56029904.8000101@huawei.com \
--to=claudio.fontana@huawei.com \
--cc=cam@cs.ualberta.ca \
--cc=drjones@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=mlureau@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).