From: Cao jin <caoj.fnst@cn.fujitsu.com>
To: Eric Blake <eblake@redhat.com>, qemu-devel@nongnu.org
Cc: stefano.stabellini@eu.citrix.com
Subject: Re: [Qemu-devel] [PATCH v5 2/5] Add Error **errp for xen_host_pci_device_get()
Date: Fri, 15 Jan 2016 11:11:40 +0800 [thread overview]
Message-ID: <5698636C.9020102@cn.fujitsu.com> (raw)
In-Reply-To: <5698214D.1080503@redhat.com>
On 01/15/2016 06:29 AM, Eric Blake wrote:
> On 01/13/2016 05:51 AM, Cao jin wrote:
>> To catch the error msg. Also modify the caller
>>
>> Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com>
>> ---
>> hw/xen/xen-host-pci-device.c | 142 +++++++++++++++++++++----------------------
>> hw/xen/xen-host-pci-device.h | 5 +-
>> hw/xen/xen_pt.c | 13 ++--
>> 3 files changed, 80 insertions(+), 80 deletions(-)
>>
>> diff --git a/hw/xen/xen-host-pci-device.c b/hw/xen/xen-host-pci-device.c
>> index 351b61a..3e22de8 100644
>> --- a/hw/xen/xen-host-pci-device.c
>> +++ b/hw/xen/xen-host-pci-device.c
>> @@ -31,25 +31,20 @@
>> #define IORESOURCE_PREFETCH 0x00001000 /* No side effects */
>> #define IORESOURCE_MEM_64 0x00100000
>>
>> -static int xen_host_pci_sysfs_path(const XenHostPCIDevice *d,
>> - const char *name, char *buf, ssize_t size)
>> +static void xen_host_pci_sysfs_path(const XenHostPCIDevice *d,
>> + const char *name, char *buf, ssize_t size)
>
> Changing xen_host_pci_sysfs_path() to return void, by assert()ing on
> caller error, is not mentioned in the commit message; and if I were
> doing the series, I probably would have done it as a separate commit.
>
Thanks for the suggestion, will split it out.
>> /* This size should be enough to read a long from a file */
>> #define XEN_HOST_PCI_GET_VALUE_BUFFER_SIZE 22
>> -static int xen_host_pci_get_value(XenHostPCIDevice *d, const char *name,
>> - unsigned int *pvalue, int base)
>> +static void xen_host_pci_get_value(XenHostPCIDevice *d, const char *name,
>> + unsigned int *pvalue, int base, Error **errp)
>> {
>
>> buf[rc] = 0;
>> - rc = qemu_strtoul(buf, &endptr, base, &value);
>> - if (!rc) {
>> - *pvalue = value;
>> + rc = qemu_strtoul(buf, &endptr, base, (unsigned long *)pvalue);
>
> Ouch. Casting unsigned int * to unsigned long * and then dereferencing
> it is bogus (you end up having qemu_strtoul() write beyond bounds on
> platforms where long is larger than int).
Yes, I considered this issue a little. Because the current condition is:
the value it want to get won`t exceed 4 byte (vendor/device ID, etc). So
I guess even if on x86_64(length of int != long), it won`t break things.
So, compared with following, which style do you prefer?
> You'll need to revert this
> part of the patch, and stick with *pvalue = value (and possibly even add
> a bounds check that value <= UINT_MAX).
>
> Otherwise looks okay.
>
--
Yours Sincerely,
Cao jin
next prev parent reply other threads:[~2016-01-15 3:08 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-13 12:51 [Qemu-devel] [PATCH v5 0/5] Xen PCI passthru: Convert to realize() Cao jin
2016-01-13 12:51 ` [Qemu-devel] [PATCH v5 1/5] Xen: use qemu_strtoul instead of strtol Cao jin
2016-01-14 22:19 ` Eric Blake
2016-01-13 12:51 ` [Qemu-devel] [PATCH v5 2/5] Add Error **errp for xen_host_pci_device_get() Cao jin
2016-01-14 22:29 ` Eric Blake
2016-01-15 3:11 ` Cao jin [this message]
2016-01-15 16:41 ` Eric Blake
2016-01-17 10:34 ` Cao jin
2016-01-13 12:51 ` [Qemu-devel] [PATCH v5 3/5] Add Error **errp for xen_pt_setup_vga() Cao jin
2016-01-14 22:31 ` Eric Blake
2016-01-13 12:51 ` [Qemu-devel] [PATCH v5 4/5] Add Error **errp for xen_pt_config_init() Cao jin
2016-01-14 22:32 ` Eric Blake
2016-01-13 12:51 ` [Qemu-devel] [PATCH v5 5/5] Xen PCI passthru: convert to realize() Cao jin
2016-01-14 22:34 ` Eric Blake
2016-01-14 16:50 ` [Qemu-devel] [PATCH v5 0/5] Xen PCI passthru: Convert " Stefano Stabellini
2016-01-14 22:36 ` Eric Blake
2016-01-15 14:16 ` Stefano Stabellini
2016-01-17 10:18 ` Cao jin
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=5698636C.9020102@cn.fujitsu.com \
--to=caoj.fnst@cn.fujitsu.com \
--cc=eblake@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefano.stabellini@eu.citrix.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.