From: Corey Minyard <minyard@acm.org>
To: "Philippe Mathieu-Daudé" <philmd@redhat.com>
Cc: "Li Zhijian" <lizhijian@cn.fujitsu.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
qemu-devel@nongnu.org, "Gerd Hoffmann" <kraxel@redhat.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Samuel Thibault" <samuel.thibault@ens-lyon.org>,
"Halil Pasic" <pasic@linux.ibm.com>,
"Christian Borntraeger" <borntraeger@de.ibm.com>,
"Anthony Perard" <anthony.perard@citrix.com>,
xen-devel@lists.xenproject.org, "Amit Shah" <amit@kernel.org>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
qemu-s390x@nongnu.org, "Paul Durrant" <paul.durrant@citrix.com>,
"Pavel Dovgalyuk" <pavel.dovgaluk@ispras.ru>,
"Zhang Chen" <zhangckid@gmail.com>,
"David Gibson" <david@gibson.dropbear.id.au>,
"Prasad J Pandit" <pjp@fedoraproject.org>,
"Cornelia Huck" <cohuck@redhat.com>,
qemu-ppc@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
"Stefan Berger" <stefanb@linux.ibm.com>
Subject: Re: [PATCH v3 23/25] hw/ipmi: Assert outlen > outpos
Date: Wed, 20 Feb 2019 07:36:08 -0600 [thread overview]
Message-ID: <20190220133608.GB5504@minyard.net> (raw)
In-Reply-To: <20190220010232.18731-24-philmd@redhat.com>
On Wed, Feb 20, 2019 at 02:02:30AM +0100, Philippe Mathieu-Daudé wrote:
> A througfull audit show that all time data is added to outbuf[],
> 'outlen' is incremented. Then at creation and each time
> continue_send() returns it pass thru check_reset which resets
> 'outpos', thus we always have 'outlen >= outpos'.
Perhaps: "A thorough audit shows that outlen is always incremented
when data is always added to outbuf[]. Then at creation and each
time continus_send() returns it assures if outpos reaches outlen,
both values are reset to zero, except in the case of sending
a reset where a new command is added."
This is certainly the design intent, thank you for the thorough
audit.
> Also due to the check on entry, we know outlen != 0.
> We can then add an assertion on 'outlen > outpos', which will
> helps the next patch to safely convert 'outlen - outpos' as an
I was a little confused by "next patch", there is no following
patch in the series for this. Maybe "next part of the patch"?
> unsigned type (size_t).
>
> Make this assertion explicit by casting 'outlen - outpos' size_t.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Outside of the minor grammer issues, this looks good. I have
noticed the inconsistent signed/unsigned usage in qemu and IMHO
it's likely to lead to very bad bugs at some point. There have
been studies that show that unsigned values tend to be more
buggy in usage due to underflows, but for a length value that
will eventually be converted to an unsigned value, what is
here is better, I think.
Both outpos and outlen are unsigned, so the size_t() cast is
not really necessary, but I guess it makes it clear.
Reviewed-by: Corey Minyard <cminyard@mvista.com>
> ---
> hw/ipmi/ipmi_bmc_extern.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c
> index bf0b7ee0f5..ca61b04942 100644
> --- a/hw/ipmi/ipmi_bmc_extern.c
> +++ b/hw/ipmi/ipmi_bmc_extern.c
> @@ -107,8 +107,9 @@ static void continue_send(IPMIBmcExtern *ibe)
> goto check_reset;
> }
> send:
> + assert(ibe->outlen > ibe->outpos);
> ret = qemu_chr_fe_write(&ibe->chr, ibe->outbuf + ibe->outpos,
> - ibe->outlen - ibe->outpos);
> + (size_t)(ibe->outlen - ibe->outpos));
> if (ret > 0) {
> ibe->outpos += ret;
> }
> --
> 2.20.1
>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
WARNING: multiple messages have this Message-ID (diff)
From: Corey Minyard <minyard@acm.org>
To: "Philippe Mathieu-Daudé" <philmd@redhat.com>
Cc: qemu-devel@nongnu.org, "Prasad J Pandit" <pjp@fedoraproject.org>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"Anthony Perard" <anthony.perard@citrix.com>,
qemu-ppc@nongnu.org, "Stefan Berger" <stefanb@linux.ibm.com>,
"David Gibson" <david@gibson.dropbear.id.au>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Zhang Chen" <zhangckid@gmail.com>,
xen-devel@lists.xenproject.org,
"Cornelia Huck" <cohuck@redhat.com>,
"Samuel Thibault" <samuel.thibault@ens-lyon.org>,
"Christian Borntraeger" <borntraeger@de.ibm.com>,
"Amit Shah" <amit@kernel.org>,
"Li Zhijian" <lizhijian@cn.fujitsu.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Paul Durrant" <paul.durrant@citrix.com>,
"Halil Pasic" <pasic@linux.ibm.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
qemu-s390x@nongnu.org,
"Pavel Dovgalyuk" <pavel.dovgaluk@ispras.ru>
Subject: Re: [Qemu-devel] [PATCH v3 23/25] hw/ipmi: Assert outlen > outpos
Date: Wed, 20 Feb 2019 07:36:08 -0600 [thread overview]
Message-ID: <20190220133608.GB5504@minyard.net> (raw)
In-Reply-To: <20190220010232.18731-24-philmd@redhat.com>
On Wed, Feb 20, 2019 at 02:02:30AM +0100, Philippe Mathieu-Daudé wrote:
> A througfull audit show that all time data is added to outbuf[],
> 'outlen' is incremented. Then at creation and each time
> continue_send() returns it pass thru check_reset which resets
> 'outpos', thus we always have 'outlen >= outpos'.
Perhaps: "A thorough audit shows that outlen is always incremented
when data is always added to outbuf[]. Then at creation and each
time continus_send() returns it assures if outpos reaches outlen,
both values are reset to zero, except in the case of sending
a reset where a new command is added."
This is certainly the design intent, thank you for the thorough
audit.
> Also due to the check on entry, we know outlen != 0.
> We can then add an assertion on 'outlen > outpos', which will
> helps the next patch to safely convert 'outlen - outpos' as an
I was a little confused by "next patch", there is no following
patch in the series for this. Maybe "next part of the patch"?
> unsigned type (size_t).
>
> Make this assertion explicit by casting 'outlen - outpos' size_t.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Outside of the minor grammer issues, this looks good. I have
noticed the inconsistent signed/unsigned usage in qemu and IMHO
it's likely to lead to very bad bugs at some point. There have
been studies that show that unsigned values tend to be more
buggy in usage due to underflows, but for a length value that
will eventually be converted to an unsigned value, what is
here is better, I think.
Both outpos and outlen are unsigned, so the size_t() cast is
not really necessary, but I guess it makes it clear.
Reviewed-by: Corey Minyard <cminyard@mvista.com>
> ---
> hw/ipmi/ipmi_bmc_extern.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c
> index bf0b7ee0f5..ca61b04942 100644
> --- a/hw/ipmi/ipmi_bmc_extern.c
> +++ b/hw/ipmi/ipmi_bmc_extern.c
> @@ -107,8 +107,9 @@ static void continue_send(IPMIBmcExtern *ibe)
> goto check_reset;
> }
> send:
> + assert(ibe->outlen > ibe->outpos);
> ret = qemu_chr_fe_write(&ibe->chr, ibe->outbuf + ibe->outpos,
> - ibe->outlen - ibe->outpos);
> + (size_t)(ibe->outlen - ibe->outpos));
> if (ret > 0) {
> ibe->outpos += ret;
> }
> --
> 2.20.1
>
next prev parent reply other threads:[~2019-02-20 13:36 UTC|newest]
Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-20 1:02 [PATCH v3 00/25] chardev: Convert qemu_chr_write() to take a size_t argument Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 1:02 ` [PATCH v3 01/25] chardev: Simplify IOWatchPoll::fd_can_read as a GSourceFunc Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 9:45 ` Marc-André Lureau
2019-02-20 9:45 ` [Qemu-devel] " Marc-André Lureau
2019-02-20 1:02 ` [PATCH v3 02/25] chardev: Assert IOCanReadHandler can not be negative Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 10:03 ` Marc-André Lureau
2019-02-20 11:13 ` Philippe Mathieu-Daudé
2019-02-20 11:13 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-22 0:39 ` Philippe Mathieu-Daudé
2019-02-22 0:39 ` Philippe Mathieu-Daudé
2019-02-20 10:03 ` Marc-André Lureau
2019-02-20 1:02 ` [PATCH v3 03/25] chardev/wctablet: Use unsigned type to hold unsigned value Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 7:32 ` Gerd Hoffmann
2019-02-20 7:32 ` Gerd Hoffmann
2019-02-20 10:17 ` [Qemu-devel] " Marc-André Lureau
2019-02-20 10:17 ` Marc-André Lureau
2019-02-20 1:02 ` [PATCH v3 04/25] chardev: Let qemu_chr_be_can_write() return a size_t types Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 10:40 ` Marc-André Lureau
2019-02-20 11:26 ` Philippe Mathieu-Daudé
2019-02-20 11:26 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 13:28 ` Marc-André Lureau
2019-02-20 13:28 ` [Qemu-devel] " Marc-André Lureau
2019-02-20 10:40 ` Marc-André Lureau
2019-02-20 1:02 ` [PATCH v3 05/25] gdbstub: Use size_t for strlen() return value Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 10:57 ` Marc-André Lureau
2019-02-20 10:57 ` Marc-André Lureau
2019-02-20 1:02 ` [PATCH v3 06/25] gdbstub: Use size_t to hold GDBState::last_packet_len Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 10:59 ` Marc-André Lureau
2019-02-20 10:59 ` [Qemu-devel] " Marc-André Lureau
2019-02-20 1:02 ` [PATCH v3 07/25] gdbstub: Let put_buffer() use size_t Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 11:02 ` Marc-André Lureau
2019-02-20 11:02 ` [Qemu-devel] " Marc-André Lureau
2019-02-20 1:02 ` [PATCH v3 08/25] ui/gtk: Remove pointless cast Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 7:32 ` Gerd Hoffmann
2019-02-20 7:32 ` [Qemu-devel] " Gerd Hoffmann
2019-02-20 1:02 ` [PATCH v3 09/25] vhost-user: Express sizeof with size_t Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 11:06 ` Marc-André Lureau
2019-02-20 11:06 ` [Qemu-devel] " Marc-André Lureau
2019-02-20 1:02 ` [PATCH v3 10/25] usb-redir: Verify usbredirparser_write get called with positive count Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 7:32 ` Gerd Hoffmann
2019-02-20 7:32 ` [Qemu-devel] " Gerd Hoffmann
2019-02-20 1:02 ` [PATCH v3 11/25] xen: Let xencons_send() take a 'size' argument Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 11:07 ` Marc-André Lureau
2019-02-20 11:07 ` [Qemu-devel] " Marc-André Lureau
2019-02-21 9:34 ` Paul Durrant
2019-02-21 9:34 ` [Qemu-devel] " Paul Durrant
2019-02-20 1:02 ` [PATCH v3 12/25] xen: Let buffer_append() return the size consumed Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 11:13 ` Marc-André Lureau
2019-02-20 11:13 ` [Qemu-devel] " Marc-André Lureau
2019-02-20 1:02 ` [RFC PATCH v3 13/25] xen: Let buffer_append() return a size_t Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-21 9:54 ` Paul Durrant
2019-02-21 9:54 ` [Qemu-devel] " Paul Durrant
2019-02-20 1:02 ` [PATCH v3 14/25] virtio-serial: Let VirtIOSerialPortClass::have_data() use size_t Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 11:21 ` Marc-André Lureau
2019-02-20 11:21 ` [Qemu-devel] " Marc-André Lureau
2019-02-20 1:02 ` [PATCH v3 15/25] spapr-vty: Let vty_putchars() " Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 1:39 ` David Gibson
2019-02-20 1:39 ` [Qemu-devel] " David Gibson
2019-02-20 1:02 ` [PATCH v3 16/25] tpm: Use size_t to hold sizes Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 11:22 ` Marc-André Lureau
2019-02-20 11:22 ` [Qemu-devel] " Marc-André Lureau
2019-02-20 1:02 ` [PATCH v3 17/25] net/filter-mirror: Use size_t Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 11:23 ` Marc-André Lureau
2019-02-20 11:23 ` [Qemu-devel] " Marc-André Lureau
2019-02-20 1:02 ` [PATCH v3 18/25] s390x/3270: Let insert_IAC_escape_char() use size_t Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 9:37 ` Cornelia Huck
2019-02-20 9:37 ` Cornelia Huck
2019-02-20 1:02 ` [PATCH v3 19/25] s390/ebcdic: Use size_t to iterate over arrays Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 9:40 ` Cornelia Huck
2019-02-20 9:40 ` [Qemu-devel] " Cornelia Huck
2019-02-20 11:37 ` Philippe Mathieu-Daudé
2019-02-20 11:37 ` Philippe Mathieu-Daudé
2019-02-20 1:02 ` [PATCH v3 20/25] s390x/sclp: Use a const variable to improve readability Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 10:53 ` Cornelia Huck
2019-02-20 10:53 ` [Qemu-devel] " Cornelia Huck
2019-03-08 19:12 ` Philippe Mathieu-Daudé
2019-03-08 19:12 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 1:02 ` [PATCH v3 21/25] s390x/sclp: Use size_t in process_mdb() Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 10:53 ` Cornelia Huck
2019-02-20 10:53 ` [Qemu-devel] " Cornelia Huck
2019-02-20 1:02 ` [PATCH v3 22/25] s390x/sclp: Let write_console_data() take a size_t Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 10:54 ` Cornelia Huck
2019-02-20 10:54 ` [Qemu-devel] " Cornelia Huck
2019-02-20 1:02 ` [PATCH v3 23/25] hw/ipmi: Assert outlen > outpos Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 13:36 ` Marc-André Lureau
2019-02-20 13:36 ` [Qemu-devel] " Marc-André Lureau
2019-02-20 13:36 ` Corey Minyard [this message]
2019-02-20 13:36 ` Corey Minyard
2019-02-20 1:02 ` [PATCH v3 24/25] chardev: Let qemu_chr_fe_write[_all] use size_t type argument Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 13:44 ` Marc-André Lureau
2019-02-20 13:44 ` [Qemu-devel] " Marc-André Lureau
2019-02-20 1:02 ` [PATCH v3 25/25] chardev: Let qemu_chr_write[_all] use size_t Philippe Mathieu-Daudé
2019-02-20 1:02 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-02-20 10:38 ` Daniel P. Berrangé
2019-02-20 10:42 ` Marc-André Lureau
2019-02-20 10:42 ` Marc-André Lureau
2019-02-20 11:31 ` Philippe Mathieu-Daudé
2019-02-20 11:31 ` Philippe Mathieu-Daudé
2019-02-20 10:38 ` Daniel P. Berrangé
2019-02-20 10:53 ` [PATCH v3 00/25] chardev: Convert qemu_chr_write() to take a size_t argument Marc-André Lureau
2019-02-20 10:53 ` [Qemu-devel] " Marc-André Lureau
2019-02-20 10:57 ` Cornelia Huck
2019-02-20 10:57 ` [Qemu-devel] " Cornelia Huck
2019-02-20 11:30 ` Daniel P. Berrangé
2019-02-20 11:30 ` Daniel P. Berrangé
2019-02-20 14:20 ` Eric Blake
2019-02-20 14:20 ` Eric Blake
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=20190220133608.GB5504@minyard.net \
--to=minyard@acm.org \
--cc=amit@kernel.org \
--cc=anthony.perard@citrix.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=jasowang@redhat.com \
--cc=kraxel@redhat.com \
--cc=lizhijian@cn.fujitsu.com \
--cc=marcandre.lureau@redhat.com \
--cc=mst@redhat.com \
--cc=pasic@linux.ibm.com \
--cc=paul.durrant@citrix.com \
--cc=pavel.dovgaluk@ispras.ru \
--cc=pbonzini@redhat.com \
--cc=philmd@redhat.com \
--cc=pjp@fedoraproject.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=samuel.thibault@ens-lyon.org \
--cc=sstabellini@kernel.org \
--cc=stefanb@linux.ibm.com \
--cc=xen-devel@lists.xenproject.org \
--cc=zhangckid@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.