qemu-devel
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]