From: Eric Blake <eblake@redhat.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>,
Markus Armbruster <armbru@redhat.com>
Cc: "Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Marc-André Lureau" <marcandre.lureau@gmail.com>,
"Kevin Wolf" <kwolf@redhat.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"qemu trival" <qemu-trivial@nongnu.org>,
qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 31/88] QMP: use g_new() family of functions
Date: Mon, 9 Oct 2017 13:04:35 -0500 [thread overview]
Message-ID: <f9b0931d-0f17-8977-f115-0f30df39b7fb@redhat.com> (raw)
In-Reply-To: <20171009081101.GA2374@work-vm>
[-- Attachment #1: Type: text/plain, Size: 2183 bytes --]
On 10/09/2017 03:11 AM, Dr. David Alan Gilbert wrote:
>>>
>>> - info = g_malloc0(sizeof(*info));
>>> + info = g_new0(CommandInfoList, 1);
>>> info->value = g_malloc0(sizeof(*info->value));
>>> info->value->name = g_strdup(cmd->name);
>>> info->next = *list;
>>
>> I'm not convinced rewriting
>>
>> LHS = g_malloc(sizeof(*LHS));
>>
>> to
>>
>> LHS = g_new(T, 1);
>>
>> where T is the type of LHS is worth the trouble. The code before the
>> rewrite is pretty idiomatic. There's no possibility of integer overflow
>> g_new() could avoid. The types are obviously correct, so the additional
>> type checking is quite unlikely to catch anything. That leaves the
>> consistency argument. I'm willing to hear it, but I feel it should be
>> heard in a patch series that does nothing else.
>
> The 'obviously correct' is the dodgy part of the argument here.
> How many bugs do we right that are obviously wrong?
>
> t.c:13:20: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
> struct c *pc = g_new(struct b, 1);
>
> seems good to me.
Yes, that's a GOOD warning, and it proves that we DO get type safety
when we convert:
LHS = g_malloc(sizeof(type))
into
LHS = g_new(type, 1)
but that's not what Markus was pointing out. When we already have the
correctly-typed object on the right hand side, as in:
LHS = g_malloc(sizeof(*LHS))
then the compiler will always give us the correct type of LHS, whereas with:
LHS = g_new(type, 1)
we have to manually update the line if the type of LHS changes.
Thus, converting malloc(sizeof(type)) into new(type, 1) is a no-brainer,
but converting malloc(sizeof(*expr)) needs justification. I'm not
necessarily opposed to the conversion (if our justification is
consistency, and where HACKING documents our style and where we have
scripts that let us easily preserve our style), but I'm not sure I see
the requisite justification in the current iteration of this series.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 619 bytes --]
next prev parent reply other threads:[~2017-10-09 18:04 UTC|newest]
Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-06 23:48 [Qemu-devel] [PATCH 00/88] use g_new() family of functions Philippe Mathieu-Daudé
2017-10-06 23:48 ` [Qemu-devel] [PATCH 01/88] cocci: script to use g_new() & friends Philippe Mathieu-Daudé
2017-10-09 7:24 ` Markus Armbruster
2017-11-02 4:16 ` Philippe Mathieu-Daudé
2017-10-06 23:48 ` [Qemu-devel] [PATCH 02/88] cocci: add more g_new() transformations Philippe Mathieu-Daudé
2017-10-09 7:28 ` Markus Armbruster
2017-10-06 23:48 ` [Qemu-devel] [PATCH 03/88] cocci: extract typeof() from g_new() Philippe Mathieu-Daudé
2017-10-06 23:48 ` [Qemu-devel] [PATCH 04/88] cocci: avoid use of g_new0() Philippe Mathieu-Daudé
2017-10-07 3:41 ` Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 05/88] cocci: use g_strfreev() Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 06/88] ARM: use g_new() family of functions Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 07/88] Audio: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 08/88] BT: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 09/88] Bootdevice: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 10/88] Character devices: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 11/88] Cryptodev Backends: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 12/88] backends/hostmem: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 13/88] Dirty Bitmaps: " Philippe Mathieu-Daudé
2017-10-07 15:45 ` John Snow
2017-10-06 23:49 ` [Qemu-devel] [PATCH 14/88] ui/vnc: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 15/88] ui/spice: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 16/88] Main loop: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 17/88] Memory API: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 18/88] memory: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 19/88] exec: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 20/88] Migration: " Philippe Mathieu-Daudé
2017-10-07 10:15 ` Juan Quintela
2017-10-06 23:49 ` [Qemu-devel] [PATCH 21/88] NBD: " Philippe Mathieu-Daudé
2017-10-09 17:55 ` Eric Blake
2017-10-06 23:49 ` [Qemu-devel] [PATCH 22/88] LM32: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 23/88] M68K: " Philippe Mathieu-Daudé
2017-10-07 5:51 ` Thomas Huth
2017-10-06 23:49 ` [Qemu-devel] [PATCH 24/88] MIPS: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 25/88] OpenRISC: " Philippe Mathieu-Daudé
2017-10-07 0:15 ` Stafford Horne
2017-10-06 23:49 ` [Qemu-devel] [PATCH 26/88] S390: " Philippe Mathieu-Daudé
2017-10-09 9:36 ` Cornelia Huck
2017-10-10 13:25 ` Cornelia Huck
2017-10-06 23:49 ` [Qemu-devel] [PATCH 27/88] SH4: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 28/88] disas: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 29/88] SPARC: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 30/88] QEMU Guest Agent: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 31/88] QMP: " Philippe Mathieu-Daudé
2017-10-09 7:38 ` Markus Armbruster
2017-10-09 8:11 ` Dr. David Alan Gilbert
2017-10-09 18:04 ` Eric Blake [this message]
2017-10-06 23:49 ` [Qemu-devel] [PATCH 32/88] QObject: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 33/88] qom: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 34/88] qapi: " Philippe Mathieu-Daudé
2017-10-09 17:59 ` Eric Blake
2017-10-06 23:49 ` [Qemu-devel] [PATCH 35/88] Record/replay: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 36/88] SLIRP: " Philippe Mathieu-Daudé
2017-10-08 22:20 ` Samuel Thibault
2017-10-06 23:49 ` [Qemu-devel] [PATCH 37/88] TCG: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 38/88] VFIO: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 39/88] hw/i386: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 40/88] hw/xen: " Philippe Mathieu-Daudé
2017-10-10 15:55 ` Anthony PERARD
2017-10-06 23:49 ` [Qemu-devel] [PATCH 41/88] target/i386: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 42/88] XTFPGA: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 43/88] hw/core: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 44/88] hw/core/loader: " Philippe Mathieu-Daudé
2017-10-10 0:03 ` Alistair Francis
2017-10-06 23:49 ` [Qemu-devel] [PATCH 45/88] hw/display: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 46/88] hw/display/vga: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 47/88] hw/i2c: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 48/88] hw/input: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 49/88] hw/misc: " Philippe Mathieu-Daudé
2017-10-09 14:21 ` Gabriel L. Somlo
2017-10-06 23:49 ` [Qemu-devel] [PATCH 50/88] ivshmem: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 51/88] hw/timer: " Philippe Mathieu-Daudé
2017-10-07 0:46 ` xiaoqiang zhao
2017-10-07 0:52 ` xiaoqiang zhao
2017-10-06 23:49 ` [Qemu-devel] [PATCH 52/88] i.MX31: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 53/88] iSCSI: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 54/88] KVM: " Philippe Mathieu-Daudé
2017-10-09 14:21 ` Gabriel L. Somlo
2017-10-06 23:49 ` [Qemu-devel] [PATCH 55/88] PReP: " Philippe Mathieu-Daudé
2017-10-07 4:38 ` David Gibson
2017-10-06 23:49 ` [Qemu-devel] [PATCH 56/88] PowerPC: " Philippe Mathieu-Daudé
2017-10-07 4:39 ` David Gibson
2017-10-06 23:49 ` [Qemu-devel] [PATCH 57/88] ppc: " Philippe Mathieu-Daudé
2017-10-07 4:40 ` David Gibson
2017-10-06 23:49 ` [Qemu-devel] [PATCH 58/88] ppc4xx: " Philippe Mathieu-Daudé
2017-10-07 5:15 ` David Gibson
2017-10-06 23:49 ` [Qemu-devel] [PATCH 59/88] ppce500: " Philippe Mathieu-Daudé
2017-10-07 5:16 ` David Gibson
2017-10-06 23:49 ` [Qemu-devel] [PATCH 60/88] sPAPR: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 61/88] tests: " Philippe Mathieu-Daudé
2017-10-09 6:46 ` Thomas Huth
2017-10-09 16:36 ` John Snow
2017-10-06 23:49 ` [Qemu-devel] [PATCH 62/88] user: " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 63/88] bsd-user/syscall: fix a memory leak on EFAULT, use g_new() Philippe Mathieu-Daudé
2017-10-07 8:48 ` [Qemu-devel] [Qemu-trivial] " Kamil Rytarowski
2017-11-06 19:06 ` [Qemu-devel] " Philippe Mathieu-Daudé
2017-10-06 23:49 ` [Qemu-devel] [PATCH 64/88] user: use g_strfreev() Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 65/88] util: use g_new() family of functions Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 66/88] util/qemu-thread-win32: " Philippe Mathieu-Daudé
2017-10-07 6:47 ` Stefan Weil
2017-10-06 23:50 ` [Qemu-devel] [PATCH 67/88] util/coroutine: " Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 68/88] virtio: " Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 69/88] virtio-9p: " Philippe Mathieu-Daudé
2017-10-07 12:51 ` Greg Kurz
2017-10-06 23:50 ` [Qemu-devel] [PATCH 70/88] block: " Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 71/88] block: avoid use of g_new0() Philippe Mathieu-Daudé
2017-10-07 3:44 ` Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 72/88] hw/block/nvme: use g_new() family of functions Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 73/88] hw/block/xen_disk: avoid use of g_new0() Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 74/88] balloon: use g_new() family of functions Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 75/88] decnumber: " Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 76/88] dma: " Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 77/88] dump: " Philippe Mathieu-Daudé
2017-10-09 9:38 ` Cornelia Huck
2017-10-06 23:50 ` [Qemu-devel] [PATCH 78/88] gdb: " Philippe Mathieu-Daudé
2017-10-09 9:38 ` Alex Bennée
2017-10-06 23:50 ` [Qemu-devel] [PATCH 79/88] hmp: " Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 80/88] numa: " Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 81/88] hw/acpi: " Philippe Mathieu-Daudé
2017-10-09 15:42 ` Ben Warren
2017-10-06 23:50 ` [Qemu-devel] [PATCH 82/88] hw/ipmi: " Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 83/88] hw/pci: " Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 84/88] hw/scsi: " Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 85/88] hw/usb: " Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 86/88] net/hub: " Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 87/88] hw/net/rocker: " Philippe Mathieu-Daudé
2017-10-06 23:50 ` [Qemu-devel] [PATCH 88/88] scripts/coverity-model: " Philippe Mathieu-Daudé
2017-10-09 6:46 ` Markus Armbruster
2017-11-02 4:11 ` Philippe Mathieu-Daudé
2017-10-07 0:04 ` [Qemu-devel] [PATCH 00/88] " Philippe Mathieu-Daudé
2017-10-07 1:26 ` no-reply
2017-10-07 1:27 ` no-reply
2017-10-07 14:18 ` Peter Maydell
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=f9b0931d-0f17-8977-f115-0f30df39b7fb@redhat.com \
--to=eblake@redhat.com \
--cc=armbru@redhat.com \
--cc=dgilbert@redhat.com \
--cc=f4bug@amsat.org \
--cc=kwolf@redhat.com \
--cc=marcandre.lureau@gmail.com \
--cc=marcandre.lureau@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@nongnu.org \
/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).