From a51948cef188d211fa1e7e0570e8abb265bb0072 Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Tue, 19 Apr 2011 19:57:36 +0300 Subject: [PATCH] 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 --- qcow.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/qcow.c b/qcow.c index 3df11c7..11f6454 100644 --- a/qcow.c +++ b/qcow.c @@ -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;