[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2] error: passing a negative value to an os_err
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v2] error: passing a negative value to an os_errno is wrong |
Date: |
Fri, 07 Nov 2014 08:41:19 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
Amos Kong <address@hidden> writes:
> On Fri, Nov 07, 2014 at 11:24:55AM +0900, SeokYeon Hwang wrote:
>> Added 'assert(os_errno > 0)' in 'error_set_errno()'.
>> Fixed errno since it passes wrong value to 'error_set_errno()'.
>>
>> Signed-off-by: SeokYeon Hwang <address@hidden>
>> ---
>> hw/pci/pcie.c | 2 +-
>> util/error.c | 1 +
>> 2 files changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c
>> index 58455bd..2902f7d 100644
>> --- a/hw/pci/pcie.c
>> +++ b/hw/pci/pcie.c
>> @@ -229,7 +229,7 @@ static void pcie_cap_slot_hotplug_common(PCIDevice
>> *hotplug_dev,
>> /* the slot is electromechanically locked.
>> * This error is propagated up to qdev and then to HMP/QMP.
>> */
>> - error_setg_errno(errp, -EBUSY, "slot is electromechanically
>> locked");
>> + error_setg_errno(errp, EBUSY, "slot is electromechanically locked");
>> }
>> }
>>
>> diff --git a/util/error.c b/util/error.c
>> index 2ace0d8..4ce22cc 100644
>> --- a/util/error.c
>> +++ b/util/error.c
>> @@ -62,6 +62,7 @@ void error_set_errno(Error **errp, int os_errno,
>> ErrorClass err_class,
>> return;
>> }
>> assert(*errp == NULL);
>> + assert(os_errno > 0);
>
> strerror(0) will return string 'Success', do we need to reserve zero here?
>
> assert(os_errno >= 0);
Yes, because...
>> err = g_malloc0(sizeof(*err));
>>
va_start(ap, fmt);
msg1 = g_strdup_vprintf(fmt, ap);
---> if (os_errno != 0) {
err->msg = g_strdup_printf("%s: %s", msg1, strerror(os_errno));
g_free(msg1);
} else {
err->msg = msg1;
}
Please fix.