blktap2: Invalid logic detecting unaligned buffers in vhd_write_block
authorRoss Philipson <ross.philipson@gmail.com>
Wed, 6 Apr 2016 14:38:59 +0000 (15:38 +0100)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Wed, 6 Apr 2016 14:50:45 +0000 (15:50 +0100)
It seems the logic is meant to detect sector unaligned buffers for block
writes. The NOTing of the logic instead masks off any unaligned bits and
also would cause the function to always fail. It seems the function is not
used in any of the tools so that is probably why the problem is not seen.
In the vhd_read_block function it is correct.

Signed-off-by: Ross Philipson <ross.philipson@ainfosec.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
tools/blktap2/vhd/lib/libvhd.c

index 1fd5b4eb9d17933e8a97ad63890ac0d7132cb84e..4ebe012acc188959ee6fefd097c95a08d5b6a3f2 100644 (file)
@@ -2188,7 +2188,7 @@ vhd_write_block(vhd_context_t *ctx, uint32_t block, char *data)
        if (block >= ctx->bat.entries)
                return -ERANGE;
 
-       if ((unsigned long)data & ~(VHD_SECTOR_SIZE -1))
+       if ((unsigned long)data & (VHD_SECTOR_SIZE -1))
                return -EINVAL;
 
        blk  = ctx->bat.bat[block];