kvm tools: Fix qcow1_read_cluster() return value on error

The qcow1_read_cluster() returns negative number on error but the return value
type is unsigned. Fix that up and also fix the call-site in qcow1_read_sector()
to deal with negative return value properly.

Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
Pekka Enberg
2015-06-01 16:39:42 +01:00
committed by Will Deacon
parent dae803fb59
commit a51948cef1
+3 -4
View File
@@ -36,8 +36,7 @@ static inline u64 get_cluster_offset(struct qcow *q, u64 offset)
return offset & ((1 << header->cluster_bits)-1);
}
static u32 qcow1_read_cluster(struct qcow *q, u64 offset, void *dst,
u32 dst_len)
static ssize_t qcow1_read_cluster(struct qcow *q, u64 offset, void *dst, u32 dst_len)
{
struct qcow1_header *header = q->header;
struct qcow_table *table = &q->table;
@@ -47,9 +46,9 @@ static u32 qcow1_read_cluster(struct qcow *q, u64 offset, void *dst,
u64 cluster_size;
u64 clust_offset;
u64 clust_start;
size_t length;
u64 l1_idx;
u64 l2_idx;
u32 length;
cluster_size = 1 << header->cluster_bits;
@@ -119,7 +118,7 @@ static int qcow1_read_sector(struct disk_image *self, uint64_t sector,
goto out_error;
nr = qcow1_read_cluster(q, offset, buf, dst_len - nr_read);
if (!nr)
if (nr <= 0)
goto out_error;
nr_read += nr;