Skip to contentSkip to conversation

blktap2: Fix two 'maybe uninitialized' variables

PATCH New Dario Faggioli 1 participant 1 message Jun 20, 2014

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 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 [-Werror=maybe-uninitialized]
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 /home/dario/Sources/xen/xen/xen.git/tools/blktap2/drivers/../../../tools/Rules.mk:89:
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.

---
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(+)
tools/blktap2/drivers/block-qcow.c +2 -0
index d5053d4..b45bcaa 100644
@@ -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
[email protected]
http://lists.xen.org/xen-devel