From: Markus Armbruster <armbru@redhat.com>
To: "Alex Bennée" <alex.bennee@linaro.org>
Cc: qemu-devel@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Christian Schoenebeck" <qemu_oss@crudebyte.com>,
"Gonglei (Arei)" <arei.gonglei@huawei.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Igor Mammedov" <imammedo@redhat.com>,
"Ani Sinha" <ani@anisinha.ca>,
"Laurent Vivier" <lvivier@redhat.com>,
"Amit Shah" <amit@kernel.org>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Anthony Perard" <anthony.perard@citrix.com>,
"Paul Durrant" <paul@xen.org>,
"Hervé Poussineau" <hpoussin@reactos.org>,
"Aleksandar Rikalo" <aleksandar.rikalo@syrmia.com>,
"Corey Minyard" <cminyard@mvista.com>,
"Patrick Venture" <venture@google.com>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Peter Xu" <peterx@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"Cédric Le Goater" <clg@kaod.org>,
"Daniel Henrique Barboza" <danielhb413@gmail.com>,
"David Gibson" <david@gibson.dropbear.id.au>,
"Greg Kurz" <groug@kaod.org>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Jean-Christophe Dubois" <jcd@tribudubois.net>,
"Keith Busch" <kbusch@kernel.org>,
"Klaus Jensen" <its@irrelevant.dk>,
"Yuval Shaia" <yuval.shaia.ml@gmail.com>,
"Yoshinori Sato" <ysato@users.sourceforge.jp>,
"Magnus Damm" <magnus.damm@gmail.com>,
"Fabien Chouteau" <chouteau@adacore.com>,
"KONRAD Frederic" <frederic.konrad@adacore.com>,
"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
"Artyom Tarasenko" <atar4qemu@gmail.com>,
"Alex Williamson" <alex.williamson@redhat.com>,
"Eric Auger" <eric.auger@redhat.com>,
"Max Filippov" <jcmvbkbc@gmail.com>,
"Juan Quintela" <quintela@redhat.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
"Konstantin Kostiuk" <kkostiuk@redhat.com>,
"Michael Roth" <michael.roth@amd.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Pavel Dovgalyuk" <pavel.dovgaluk@ispras.ru>,
"David Hildenbrand" <david@redhat.com>,
"Wenchao Wang" <wenchao.wang@intel.com>,
"Kamil Rytarowski" <kamil@netbsd.org>,
"Reinoud Zandijk" <reinoud@netbsd.org>,
"Sunil Muthuswamy" <sunilmut@microsoft.com>,
"Cornelia Huck" <cohuck@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
"Eric Blake" <eblake@redhat.com>,
"Vladimir Sementsov-Ogievskiy" <vsementsov@virtuozzo.com>,
"John Snow" <jsnow@redhat.com>,
kvm@vger.kernel.org, qemu-arm@nongnu.org,
xen-devel@lists.xenproject.org, qemu-ppc@nongnu.org,
qemu-block@nongnu.org, haxm-team@intel.com,
qemu-s390x@nongnu.org
Subject: Re: [PATCH 3/3] Use g_new() & friends where that makes obvious sense
Date: Tue, 15 Mar 2022 14:49:34 +0100 [thread overview]
Message-ID: <87ilsfl40h.fsf@pond.sub.org> (raw)
In-Reply-To: <877d8w5m9e.fsf@linaro.org> ("Alex Bennée"'s message of "Mon, 14 Mar 2022 19:48:47 +0000")
Alex Bennée <alex.bennee@linaro.org> writes:
> Markus Armbruster <armbru@redhat.com> writes:
>
>> g_new(T, n) is neater than g_malloc(sizeof(T) * n). It's also safer,
>> for two reasons. One, it catches multiplication overflowing size_t.
>> Two, it returns T * rather than void *, which lets the compiler catch
>> more type errors.
>>
>> This commit only touches allocations with size arguments of the form
>> sizeof(T).
>>
>> Patch created mechanically with:
>>
>> $ spatch --in-place --sp-file scripts/coccinelle/use-g_new-etc.cocci \
>> --macro-file scripts/cocci-macro-file.h FILES...
>>
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
[...]
>> --- a/hw/pci/pcie_sriov.c
>> +++ b/hw/pci/pcie_sriov.c
>> @@ -177,7 +177,7 @@ static void register_vfs(PCIDevice *dev)
>> assert(sriov_cap > 0);
>> num_vfs = pci_get_word(dev->config + sriov_cap + PCI_SRIOV_NUM_VF);
>>
>> - dev->exp.sriov_pf.vf = g_malloc(sizeof(PCIDevice *) * num_vfs);
>> + dev->exp.sriov_pf.vf = g_new(PCIDevice *, num_vfs);
>> assert(dev->exp.sriov_pf.vf);
>
> So what I find confusing about the conversion of sizeof(foo *) is that
> while the internal sizeof in g_new is unaffected I think the casting
> ends up as
>
> foo **
Yes. g_malloc(...) returns void *. g_new(T, ...) returns T *.
> but I guess the compiler would have complained so maybe I don't
> understand the magic enough.
It doesn't complain here because dev->exp.sriov_pf.vf is of type
PCIDevice **:
struct PCIESriovPF {
uint16_t num_vfs; /* Number of virtual functions created */
uint8_t vf_bar_type[PCI_NUM_REGIONS]; /* Store type for each VF bar */
const char *vfname; /* Reference to the device type used for the VFs */
PCIDevice **vf; /* Pointer to an array of num_vfs VF devices */
};
It does complain when the types don't match, as shown in PATCH 2.
> <snip>
>> index 42130667a7..598e6adc5e 100644
>> --- a/hw/rdma/vmw/pvrdma_dev_ring.c
>> +++ b/hw/rdma/vmw/pvrdma_dev_ring.c
>> @@ -41,7 +41,7 @@ int pvrdma_ring_init(PvrdmaRing *ring, const char *name, PCIDevice *dev,
>> qatomic_set(&ring->ring_state->cons_head, 0);
>> */
>> ring->npages = npages;
>> - ring->pages = g_malloc0(npages * sizeof(void *));
>> + ring->pages = g_new0(void *, npages);
>
> At least here ring->pages agrees about void ** being the result.
>
> <snip>
>
> So other than my queries about the sizeof(foo *) which I'd like someone
> to assuage me of my concerns it looks like the script has done a
> thorough mechanical job as all good scripts should ;-)
>
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Thanks!
WARNING: multiple messages have this Message-ID (diff)
From: Markus Armbruster <armbru@redhat.com>
To: "Alex Bennée" <alex.bennee@linaro.org>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Daniel Henrique Barboza" <danielhb413@gmail.com>,
kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"Christian Schoenebeck" <qemu_oss@crudebyte.com>,
qemu-devel@nongnu.org, "Peter Xu" <peterx@redhat.com>,
"Klaus Jensen" <its@irrelevant.dk>,
"KONRAD Frederic" <frederic.konrad@adacore.com>,
"Konstantin Kostiuk" <kkostiuk@redhat.com>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Ani Sinha" <ani@anisinha.ca>,
"Reinoud Zandijk" <reinoud@netbsd.org>,
"Eric Blake" <eblake@redhat.com>,
"Sunil Muthuswamy" <sunilmut@microsoft.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
xen-devel@lists.xenproject.org,
"Yoshinori Sato" <ysato@users.sourceforge.jp>,
"Juan Quintela" <quintela@redhat.com>,
"Paul Durrant" <paul@xen.org>,
"Magnus Damm" <magnus.damm@gmail.com>,
"Kamil Rytarowski" <kamil@netbsd.org>,
"Gonglei (Arei)" <arei.gonglei@huawei.com>,
"Hervé Poussineau" <hpoussin@reactos.org>,
"Michael Roth" <michael.roth@amd.com>,
"Anthony Perard" <anthony.perard@citrix.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Artyom Tarasenko" <atar4qemu@gmail.com>,
"Laurent Vivier" <lvivier@redhat.com>,
"Aleksandar Rikalo" <aleksandar.rikalo@syrmia.com>,
"Amit Shah" <amit@kernel.org>,
"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
haxm-team@intel.com,
"Richard Henderson" <richard.henderson@linaro.org>,
"Greg Kurz" <groug@kaod.org>,
"Fabien Chouteau" <chouteau@adacore.com>,
"Yuval Shaia" <yuval.shaia.ml@gmail.com>,
"Thomas Huth" <thuth@redhat.com>,
"Eric Auger" <eric.auger@redhat.com>,
"Alex Williamson" <alex.williamson@redhat.com>,
qemu-arm@nongnu.org, "Cédric Le Goater" <clg@kaod.org>,
"Pavel Dovgalyuk" <pavel.dovgaluk@ispras.ru>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Keith Busch" <kbusch@kernel.org>,
qemu-ppc@nongnu.org, "David Hildenbrand" <david@redhat.com>,
"John Snow" <jsnow@redhat.com>,
"David Gibson" <david@gibson.dropbear.id.au>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Vladimir Sementsov-Ogievskiy" <vsementsov@virtuozzo.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
qemu-block@nongnu.org, "Max Filippov" <jcmvbkbc@gmail.com>,
qemu-s390x@nongnu.org, "Patrick Venture" <venture@google.com>,
"Cornelia Huck" <cohuck@redhat.com>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Jean-Christophe Dubois" <jcd@tribudubois.net>,
"Corey Minyard" <cminyard@mvista.com>,
"Wenchao Wang" <wenchao.wang@intel.com>,
"Igor Mammedov" <imammedo@redhat.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>
Subject: Re: [PATCH 3/3] Use g_new() & friends where that makes obvious sense
Date: Tue, 15 Mar 2022 14:49:34 +0100 [thread overview]
Message-ID: <87ilsfl40h.fsf@pond.sub.org> (raw)
In-Reply-To: <877d8w5m9e.fsf@linaro.org> ("Alex Bennée"'s message of "Mon, 14 Mar 2022 19:48:47 +0000")
Alex Bennée <alex.bennee@linaro.org> writes:
> Markus Armbruster <armbru@redhat.com> writes:
>
>> g_new(T, n) is neater than g_malloc(sizeof(T) * n). It's also safer,
>> for two reasons. One, it catches multiplication overflowing size_t.
>> Two, it returns T * rather than void *, which lets the compiler catch
>> more type errors.
>>
>> This commit only touches allocations with size arguments of the form
>> sizeof(T).
>>
>> Patch created mechanically with:
>>
>> $ spatch --in-place --sp-file scripts/coccinelle/use-g_new-etc.cocci \
>> --macro-file scripts/cocci-macro-file.h FILES...
>>
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
[...]
>> --- a/hw/pci/pcie_sriov.c
>> +++ b/hw/pci/pcie_sriov.c
>> @@ -177,7 +177,7 @@ static void register_vfs(PCIDevice *dev)
>> assert(sriov_cap > 0);
>> num_vfs = pci_get_word(dev->config + sriov_cap + PCI_SRIOV_NUM_VF);
>>
>> - dev->exp.sriov_pf.vf = g_malloc(sizeof(PCIDevice *) * num_vfs);
>> + dev->exp.sriov_pf.vf = g_new(PCIDevice *, num_vfs);
>> assert(dev->exp.sriov_pf.vf);
>
> So what I find confusing about the conversion of sizeof(foo *) is that
> while the internal sizeof in g_new is unaffected I think the casting
> ends up as
>
> foo **
Yes. g_malloc(...) returns void *. g_new(T, ...) returns T *.
> but I guess the compiler would have complained so maybe I don't
> understand the magic enough.
It doesn't complain here because dev->exp.sriov_pf.vf is of type
PCIDevice **:
struct PCIESriovPF {
uint16_t num_vfs; /* Number of virtual functions created */
uint8_t vf_bar_type[PCI_NUM_REGIONS]; /* Store type for each VF bar */
const char *vfname; /* Reference to the device type used for the VFs */
PCIDevice **vf; /* Pointer to an array of num_vfs VF devices */
};
It does complain when the types don't match, as shown in PATCH 2.
> <snip>
>> index 42130667a7..598e6adc5e 100644
>> --- a/hw/rdma/vmw/pvrdma_dev_ring.c
>> +++ b/hw/rdma/vmw/pvrdma_dev_ring.c
>> @@ -41,7 +41,7 @@ int pvrdma_ring_init(PvrdmaRing *ring, const char *name, PCIDevice *dev,
>> qatomic_set(&ring->ring_state->cons_head, 0);
>> */
>> ring->npages = npages;
>> - ring->pages = g_malloc0(npages * sizeof(void *));
>> + ring->pages = g_new0(void *, npages);
>
> At least here ring->pages agrees about void ** being the result.
>
> <snip>
>
> So other than my queries about the sizeof(foo *) which I'd like someone
> to assuage me of my concerns it looks like the script has done a
> thorough mechanical job as all good scripts should ;-)
>
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Thanks!
next prev parent reply other threads:[~2022-03-15 13:49 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-14 16:01 [PATCH 0/3] Use g_new() & friends where that makes obvious Markus Armbruster
2022-03-14 16:01 ` Markus Armbruster
2022-03-14 16:01 ` [PATCH 1/3] scripts/coccinelle: New use-g_new-etc.cocci Markus Armbruster
2022-03-14 16:01 ` Markus Armbruster
2022-03-14 19:07 ` Richard Henderson
2022-03-14 19:22 ` Alex Bennée
2022-03-14 19:22 ` Alex Bennée
2022-03-14 16:01 ` [PATCH 2/3] 9pfs: Use g_new() & friends where that makes obvious sense Markus Armbruster
2022-03-14 16:01 ` Markus Armbruster
2022-03-14 16:42 ` Christian Schoenebeck
2022-03-14 18:46 ` Philippe Mathieu-Daudé
2022-03-14 18:46 ` Philippe Mathieu-Daudé
2022-03-14 19:19 ` Christian Schoenebeck
2022-03-14 19:23 ` Alex Bennée
2022-03-14 19:23 ` Alex Bennée
2022-03-15 7:53 ` Greg Kurz
2022-03-15 7:53 ` Greg Kurz
2022-03-14 16:01 ` [PATCH 3/3] " Markus Armbruster
2022-03-14 16:01 ` Markus Armbruster
2022-03-14 16:08 ` Peter Maydell
2022-03-14 16:08 ` Peter Maydell
2022-03-14 16:52 ` Markus Armbruster
2022-03-14 16:52 ` Markus Armbruster
2022-03-14 17:39 ` Daniel P. Berrangé
2022-03-14 17:39 ` Daniel P. Berrangé
2022-03-14 17:06 ` Cédric Le Goater
2022-03-14 17:06 ` Cédric Le Goater
2022-03-14 19:48 ` Alex Bennée
2022-03-14 19:48 ` Alex Bennée
2022-03-14 20:37 ` Christian Schoenebeck
2022-03-15 13:49 ` Markus Armbruster [this message]
2022-03-15 13:49 ` Markus Armbruster
2022-03-14 22:52 ` Alex Bennée
2022-03-14 22:52 ` Alex Bennée
2022-03-15 13:59 ` Markus Armbruster
2022-03-15 13:59 ` Markus Armbruster
2022-03-15 14:07 ` Philippe Mathieu-Daudé
2022-03-15 14:07 ` Philippe Mathieu-Daudé
2022-03-15 14:43 ` Markus Armbruster
2022-03-15 14:43 ` Markus Armbruster
2022-03-15 16:16 ` Alex Bennée
2022-03-15 16:16 ` Alex Bennée
2022-03-15 9:07 ` Eric Blake
2022-03-15 9:07 ` Eric Blake
2022-03-15 14:03 ` Markus Armbruster
2022-03-15 14:03 ` Markus Armbruster
2022-03-15 10:58 ` Dr. David Alan Gilbert
2022-03-15 10:58 ` Dr. David Alan Gilbert
2022-03-14 16:41 ` [PATCH 0/3] Use g_new() & friends where that makes obvious Philippe Mathieu-Daudé
2022-03-14 16:41 ` Philippe Mathieu-Daudé
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=87ilsfl40h.fsf@pond.sub.org \
--to=armbru@redhat.com \
--cc=aleksandar.rikalo@syrmia.com \
--cc=alex.bennee@linaro.org \
--cc=alex.williamson@redhat.com \
--cc=amit@kernel.org \
--cc=ani@anisinha.ca \
--cc=anthony.perard@citrix.com \
--cc=arei.gonglei@huawei.com \
--cc=atar4qemu@gmail.com \
--cc=berrange@redhat.com \
--cc=chouteau@adacore.com \
--cc=clg@kaod.org \
--cc=cminyard@mvista.com \
--cc=cohuck@redhat.com \
--cc=danielhb413@gmail.com \
--cc=david@gibson.dropbear.id.au \
--cc=david@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=eduardo@habkost.net \
--cc=eric.auger@redhat.com \
--cc=f4bug@amsat.org \
--cc=frederic.konrad@adacore.com \
--cc=groug@kaod.org \
--cc=haxm-team@intel.com \
--cc=hpoussin@reactos.org \
--cc=imammedo@redhat.com \
--cc=its@irrelevant.dk \
--cc=jasowang@redhat.com \
--cc=jcd@tribudubois.net \
--cc=jcmvbkbc@gmail.com \
--cc=jsnow@redhat.com \
--cc=kamil@netbsd.org \
--cc=kbusch@kernel.org \
--cc=kkostiuk@redhat.com \
--cc=kraxel@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=lvivier@redhat.com \
--cc=magnus.damm@gmail.com \
--cc=marcandre.lureau@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=michael.roth@amd.com \
--cc=mst@redhat.com \
--cc=paul@xen.org \
--cc=pavel.dovgaluk@ispras.ru \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=peterx@redhat.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=qemu_oss@crudebyte.com \
--cc=quintela@redhat.com \
--cc=reinoud@netbsd.org \
--cc=richard.henderson@linaro.org \
--cc=sstabellini@kernel.org \
--cc=sunilmut@microsoft.com \
--cc=thuth@redhat.com \
--cc=venture@google.com \
--cc=vsementsov@virtuozzo.com \
--cc=wenchao.wang@intel.com \
--cc=xen-devel@lists.xenproject.org \
--cc=ysato@users.sourceforge.jp \
--cc=yuval.shaia.ml@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.