[libvirt] [PATCH] Fix building with -Og

Martin Kletzander mkletzan at redhat.com
Fri Jun 3 12:59:15 UTC 2016


On Fri, Jun 03, 2016 at 01:52:40PM +0200, Peter Krempa wrote:
>On Fri, Jun 03, 2016 at 13:32:02 +0200, Martin Kletzander wrote:
>> When building using -Og, gcc sees that some variables can be used
>> uninitialized  It can be debatable whether it is possible with our
>> codeflow, but functions should be self-contained and initializations are
>> always good.  The return instead of goto is due to actualType being used
>> in the cleanup.
>>
>> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
>> ---
>>  src/lxc/lxc_driver.c                      | 2 +-
>>  src/nwfilter/nwfilter_ebiptables_driver.c | 2 +-
>>  src/util/virbitmap.c                      | 2 +-
>>  3 files changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
>> index 67f14fe766a5..f0948eae774e 100644
>> --- a/src/lxc/lxc_driver.c
>> +++ b/src/lxc/lxc_driver.c
>> @@ -4275,7 +4275,7 @@ lxcDomainAttachDeviceNetLive(virConnectPtr conn,
>>      if (!priv->initpid) {
>>          virReportError(VIR_ERR_OPERATION_INVALID, "%s",
>>                         _("Cannot attach disk until init PID is known"));
>> -        goto cleanup;
>> +        return -1;
>>      }
>
>False positive. actualType is never evaluated uninitialized since ret is
>set to -1 and veth is NULL.
>

I didn't check the initialization for veth,  but it looks better this
way.

>It makes sense to change it since a lot of stuff below is returning -1
>directly.
>
>>
>>      if (virLXCProcessValidateInterface(net) < 0)
>> diff --git a/src/nwfilter/nwfilter_ebiptables_driver.c b/src/nwfilter/nwfilter_ebiptables_driver.c
>> index 423d069e1b26..b7be2917e29e 100644
>> --- a/src/nwfilter/nwfilter_ebiptables_driver.c
>> +++ b/src/nwfilter/nwfilter_ebiptables_driver.c
>> @@ -1570,7 +1570,7 @@ iptablesCreateRuleInstanceStateCtrl(virFirewallPtr fw,
>>                                      const char *ifname,
>>                                      virNWFilterVarCombIterPtr vars)
>>  {
>> -    int rc;
>> +    int rc = 0;
>>      bool directionIn = false;
>>      char chainPrefix[2];
>>      bool maySkipICMP, inout = false;
>
>Bah. This function makes my brain hurt. I didn't bother checking.
>

Mine too, had to check it three times.

>> diff --git a/src/util/virbitmap.c b/src/util/virbitmap.c
>> index 9283aef1735b..4ca59f9d6227 100644
>> --- a/src/util/virbitmap.c
>> +++ b/src/util/virbitmap.c
>> @@ -817,7 +817,7 @@ virBitmapLastSetBit(virBitmapPtr bitmap)
>>      ssize_t i;
>>      int unusedBits;
>>      ssize_t sz;
>> -    unsigned long bits;
>> +    unsigned long bits = 0;
>
>okay, so there are possible input values ableit being invalid and
>impossible that would actually allow to evaluate bits when uninitialized.
>
>ACK, I hope that people get tired of experimenting with bleeding edge
>compilers soon.
>

I have no idea what that has in common with this patch.  I used gcc 5
(hardly bleeding edge, more like a flesh wound border) and just wanted
to get some more debugging info kept in the binary.  Plus lok at this
excerpt from gcc(1) about -Og:

  "It should be the optimization level of choice for the standard
   edit-compile-debug cycle, ..."

Anyway, sorry for compiling our source with non-default config ;)

Martin

P.S.: Pushed now.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20160603/50245b55/attachment-0001.sig>


More information about the libvir-list mailing list