diff mbox

libxc: initialise rc to -1 at the beginning of meminit_hvm

Message ID 1457019043-14050-1-git-send-email-wei.liu2@citrix.com (mailing list archive)
State New, archived
Headers show

Commit Message

Wei Liu March 3, 2016, 3:30 p.m. UTC
Variable rc is only set either inside a loop or inside some if
statements. To avoid confuse gcc with stricter setting we set rc to -1
at the beginning.

Reported-by: Doug Goldstein <cardoe@cardoe.com>
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
Cc: Ian Jackson <ian.jackson@eu.citrix.com>
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Roger Pau Monne <roger.pau@citrix.com>
---
 tools/libxc/xc_dom_x86.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Ian Jackson March 3, 2016, 3:46 p.m. UTC | #1
Wei Liu writes ("[PATCH] libxc: initialise rc to -1 at the beginning of meminit_hvm"):
> Variable rc is only set either inside a loop or inside some if
> statements. To avoid confuse gcc with stricter setting we set rc to -1
> at the beginning.

Is this really the best way to fix this ?

AFAICT the problem arises only for this code:

    if ( rc != 0 )
    {
        DOMPRINTF("Could not allocate memory for HVM guest.");
        goto error_out;
    }

which occurs after the loop.  But that path happens only if

        if ( rc != 0 )
            break;

is executed inside the loop.

If the error case was moved into the loop, there would be no need for
the separate test of rc (which is confusing to humans as well as to
the compiler).

Do you agree ?

Ian.
Wei Liu March 3, 2016, 3:59 p.m. UTC | #2
On Thu, Mar 03, 2016 at 03:46:23PM +0000, Ian Jackson wrote:
> Wei Liu writes ("[PATCH] libxc: initialise rc to -1 at the beginning of meminit_hvm"):
> > Variable rc is only set either inside a loop or inside some if
> > statements. To avoid confuse gcc with stricter setting we set rc to -1
> > at the beginning.
> 
> Is this really the best way to fix this ?
> 
> AFAICT the problem arises only for this code:
> 
>     if ( rc != 0 )
>     {
>         DOMPRINTF("Could not allocate memory for HVM guest.");
>         goto error_out;
>     }
> 
> which occurs after the loop.  But that path happens only if
> 
>         if ( rc != 0 )
>             break;
> 
> is executed inside the loop.
> 
> If the error case was moved into the loop, there would be no need for
> the separate test of rc (which is confusing to humans as well as to
> the compiler).
> 
> Do you agree ?
> 

Yes, that's better.

I will send v2 shortly.

Wei.

> Ian.
diff mbox

Patch

diff --git a/tools/libxc/xc_dom_x86.c b/tools/libxc/xc_dom_x86.c
index e13a4aa..c0c01a0 100644
--- a/tools/libxc/xc_dom_x86.c
+++ b/tools/libxc/xc_dom_x86.c
@@ -1258,7 +1258,7 @@  static int meminit_hvm(struct xc_dom_image *dom)
     unsigned long p2m_size;
     unsigned long target_pages = dom->target_pages;
     unsigned long cur_pages, cur_pfn;
-    int rc;
+    int rc = -1;
     xen_capabilities_info_t caps;
     unsigned long stat_normal_pages = 0, stat_2mb_pages = 0, 
         stat_1gb_pages = 0;