[libvirt] [PATCH] macvtap: Fix error return values to -1 instead of 1
Roopa Prabhu
roprabhu at cisco.com
Thu Oct 20 21:18:18 UTC 2011
On 10/20/11 11:57 AM, "Laine Stump" <laine at laine.org> wrote:
> On 10/20/2011 01:46 PM, Roopa Prabhu wrote:
>> From: Roopa Prabhu<roprabhu at cisco.com>
>>
>> Fixes some cases where 1 was being returned instead of -1.
>> There are still some inconsistencies in the file with respect
>> to what the return variable is initialized to. Can be fixed
>> as a separate patch if needed. The scope of this patch is just
>> to fix the return value 1. Did some basic sanity test.
>
> This patch hasn't changed the checks of the return code made by callers
> to these functions - a spot check showed several that still say "if (rc)
> { ...." rather than "if (rc < 0) { ....". While that is technically
> correct, it is inconsistent with the preferred style in libvirt, and I'm
> guessing that style is at least partly the reason for making this patch
> in the first place :-).
> As long as you're going to make this change, you
> may as well trace back up the call chain for all changed functions and
> fix the callers to be consistent.
Actually I did trace the call chain for every change and I thought if (rc)
for negative values was just fine. Dint realize that libvirt preferred style
was if (rc < 0)
>
> (I also noticed at least one place that uses "xxx() != 0" instead of
> "xxx() < 0". Making all of these comparisons consistent will make it
> much easier for someone auditing the code in the future to understand
> that the "errors are < 0" convention has been followed for these functions.)
>
Yes I do agree that this file has some inconsistency in the checks. I
noticed that and also listed one of them in the log comment for this patch.
And only removed the return 1.
Agree that its good to fix all inconsistencies, I will fix them all and
respin.
Thanks!
Roopa
>> Signed-off-by: Roopa Prabhu<roprabhu at cisco.com>
>> Reported-by: Eric Blake<eblake at redhat.com>
>> ---
>> src/util/macvtap.c | 22 ++++++++--------------
>> 1 files changed, 8 insertions(+), 14 deletions(-)
>>
>>
>> diff --git a/src/util/macvtap.c b/src/util/macvtap.c
>> index 7fd6eb5..f8b9d55 100644
>> --- a/src/util/macvtap.c
>> +++ b/src/util/macvtap.c
>> @@ -480,7 +480,7 @@ getPortProfileStatus(struct nlattr **tb, int32_t vf,
>> bool is8021Qbg,
>> uint16_t *status)
>> {
>> - int rc = 1;
>> + int rc = -1;
>> const char *msg = NULL;
>> struct nlattr *tb_port[IFLA_PORT_MAX + 1] = { NULL, };
>>
>> @@ -806,7 +806,7 @@ doPortProfileOpCommon(bool nltarget_kernel,
>> _("error %d during port-profile setlink on "
>> "interface %s (%d)"),
>> status, ifname, ifindex);
>> - rc = 1;
>> + rc = -1;
>> break;
>> }
>>
>> @@ -867,7 +867,7 @@ doPortProfileOp8021Qbg(const char *ifname,
>> const virVirtualPortProfileParamsPtr virtPort,
>> enum virVirtualPortOp virtPortOp)
>> {
>> - int rc;
>> + int rc = -1;
>>
>> # ifndef IFLA_VF_PORT_MAX
>>
>> @@ -877,7 +877,6 @@ doPortProfileOp8021Qbg(const char *ifname,
>> (void)virtPortOp;
>> macvtapError(VIR_ERR_INTERNAL_ERROR, "%s",
>> _("Kernel VF Port support was missing at compile time."));
>> - rc = 1;
>>
>> # else /* IFLA_VF_PORT_MAX */
>>
>> @@ -893,10 +892,8 @@ doPortProfileOp8021Qbg(const char *ifname,
>> int vf = PORT_SELF_VF;
>>
>> if (getPhysdevAndVlan(ifname,&physdev_ifindex, physdev_ifname,
>> -&vlanid) != 0) {
>> - rc = 1;
>> +&vlanid) != 0)
>> goto err_exit;
>> - }
>>
>> if (vlanid< 0)
>> vlanid = 0;
>> @@ -918,7 +915,6 @@ doPortProfileOp8021Qbg(const char *ifname,
>> default:
>> macvtapError(VIR_ERR_INTERNAL_ERROR,
>> _("operation type %d not supported"), virtPortOp);
>> - rc = 1;
>> goto err_exit;
>> }
>>
>> @@ -982,7 +978,7 @@ doPortProfileOp8021Qbh(const char *ifname,
>> const unsigned char *vm_uuid,
>> enum virVirtualPortOp virtPortOp)
>> {
>> - int rc;
>> + int rc = -1;
>>
>> # ifndef IFLA_VF_PORT_MAX
>>
>> @@ -993,7 +989,6 @@ doPortProfileOp8021Qbh(const char *ifname,
>> (void)virtPortOp;
>> macvtapError(VIR_ERR_INTERNAL_ERROR, "%s",
>> _("Kernel VF Port support was missing at compile time."));
>> - rc = 1;
>>
>> # else /* IFLA_VF_PORT_MAX */
>>
>> @@ -1008,10 +1003,9 @@ doPortProfileOp8021Qbh(const char *ifname,
>> if (rc)
>> goto err_exit;
>>
>> - if (ifaceGetIndex(true, physfndev,&ifindex)< 0) {
>> - rc = 1;
>> + rc = ifaceGetIndex(true, physfndev,&ifindex);
>> + if (rc< 0)
>> goto err_exit;
>> - }
>>
>> switch (virtPortOp) {
>> case PREASSOCIATE_RR:
>> @@ -1059,7 +1053,7 @@ doPortProfileOp8021Qbh(const char *ifname,
>> default:
>> macvtapError(VIR_ERR_INTERNAL_ERROR,
>> _("operation type %d not supported"), virtPortOp);
>> - rc = 1;
>> + rc = -1;
>> }
>>
>> err_exit:
>>
>> --
>> libvir-list mailing list
>> libvir-list at redhat.com
>> https://www.redhat.com/mailman/listinfo/libvir-list
>>
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
More information about the libvir-list
mailing list