diff mbox

[xen-4.4-testing,test] 66583: regressions - FAIL

Message ID 22156.64847.849022.761752@mariner.uk.xensource.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ian Jackson Jan. 6, 2016, 11:41 a.m. UTC
Ian Campbell writes ("Re: [Xen-devel] [xen-4.4-testing test] 66583: regressions - FAIL"):
> Aha, this failure is in tools/blktap/drivers/block-qcow.c and not
> tools/blktap2/drivers/block-qcow.c. 

Well spotted.

> 345e44a85d71 was writing after blktap1 was remove from the tree so
> backporting it wouldn't have helped.

Right.

>     $ git show 345e44a85d71a | patch tools/blktap/drivers/block-qcow.c
>     patching file tools/blktap/drivers/block-qcow.c
>     Hunk #1 succeeded at 440 (offset 13 lines).
>     Hunk #2 succeeded at 614 (offset 13 lines).
>     $ 
> 
> Seems like the way to go for all branches which still have blktap1 (4.5 and
> back, although it was disabled by default in 76c66c689b85 which was in
> 4.4.0-rc1.

I have done roughly this, to 4.3-4.5 inclusive.

Ian.

commit a64bfae49ae845ba4cb8cb6923fa08c41439872a
Author: Dario Faggioli <dario.faggioli@citrix.com>
Date:   Fri Jun 20 16:09:00 2014 +0200

    blktap: Fix two 'maybe uninitialized' variables
    
    [ Cross-ported to blktap1 from 345e44a85d71a
      "blktap2: Fix two 'maybe uninitialized' variables" -iwj;
      Remainder of commit message is from blktap2's version. ]
    
    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.
    
    Signed-off-by: Dario Faggioli <dario.faggioli@citrix.com>
    Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
    
    Backport-requested-by: Ian Campbell <ian.campbell@citrix.com>
    Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
    (cherry picked from commit 845e8c1653242bbd9b9de5a081182db0f3f39054)
    (cherry picked from commit e003d429d8c63523df40663b4586c572ce796659)
diff mbox

Patch

diff --git a/tools/blktap/drivers/block-qcow.c b/tools/blktap/drivers/block-qcow.c
index 0e4e9cf..8fb6023 100644
--- a/tools/blktap/drivers/block-qcow.c
+++ b/tools/blktap/drivers/block-qcow.c
@@ -440,6 +440,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);
 
@@ -613,6 +614,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);