[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v2] blktap2: Fix two 'maybe uninitialized' variables

for which gcc 4.9.0 complains about, like this:

block-qcow.c: In function Ãget_cluster_offsetÃ:
block-qcow.c:431:3: error: Ãtmp_ptrà may be used uninitialized in this function
   memcpy(tmp_ptr, l1_ptr, 4096);
block-qcow.c:606:7: error: Ãtmp_ptr2Ã may be used uninitialized in this
function [-Werror=maybe-uninitialized]
   if (write(s->fd, tmp_ptr2, 4096) != 4096) {
cc1: all warnings being treated as errors
 recipe for target 'block-qcow.o' failed
make[5]: *** [block-qcow.o] Error 1

The proper behavior is to return upon allocation failure.
About what to return, 0 seems the best option, looking
at both the function and the call sites.

Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx>
Changes from v1:
 * instead of just inizialize the variables to suppress the warning,
   fix the issue by returning when the allocation fails.
   I am resubmitting this as a proper patch, as Ian Campbell suggested,
   as days have passed, and no one  showed up suggesting that something
   could be wrong with the patch. I still am no expert in blktap, but
   I looked once more at the code, and this patch seems ok to me.
 tools/blktap2/drivers/block-qcow.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/blktap2/drivers/block-qcow.c 
index d5053d4..b45bcaa 100644
--- a/tools/blktap2/drivers/block-qcow.c
+++ b/tools/blktap2/drivers/block-qcow.c
@@ -427,6 +427,7 @@ static uint64_t get_cluster_offset(struct tdqcow_state *s,
                if (posix_memalign((void **)&tmp_ptr, 4096, 4096) != 0) {
                        DPRINTF("ERROR allocating memory for L1 table\n");
+                        return 0;
                memcpy(tmp_ptr, l1_ptr, 4096);
@@ -600,6 +601,7 @@ found:
                if (posix_memalign((void **)&tmp_ptr2, 4096, 4096) != 0) {
                        DPRINTF("ERROR allocating memory for L1 table\n");
+                        return 0;
                memcpy(tmp_ptr2, l2_ptr, 4096);
                lseek(s->fd, l2_offset + (l2_sector << 12), SEEK_SET);

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.