Patchwork qcow2: Fix signedness bugs

login
register
mail settings
Submitter Kevin Wolf
Date Feb. 2, 2010, 2:20 p.m.
Message ID <1265120457-25143-1-git-send-email-kwolf@redhat.com>
Download mbox | patch
Permalink /patch/44289/
State New
Headers show

Comments

Kevin Wolf - Feb. 2, 2010, 2:20 p.m.
Checking for return codes < 0 isn't really going to work with unsigned
types. Use signed types instead.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 block/qcow2-cluster.c |   12 ++++++------
 block/qcow2.h         |    6 ++----
 2 files changed, 8 insertions(+), 10 deletions(-)
Markus Armbruster - Feb. 3, 2010, 5:58 p.m.
Kevin Wolf <kwolf@redhat.com> writes:

> Checking for return codes < 0 isn't really going to work with unsigned
> types. Use signed types instead.

Makes sense to me.
Anthony Liguori - Feb. 10, 2010, 6:32 p.m.
On 02/02/2010 08:20 AM, Kevin Wolf wrote:
> Checking for return codes<  0 isn't really going to work with unsigned
> types. Use signed types instead.
>
> Signed-off-by: Kevin Wolf<kwolf@redhat.com>
>    

Applied.  Thanks.

Regards,

Anthony Liguori
> ---
>   block/qcow2-cluster.c |   12 ++++++------
>   block/qcow2.h         |    6 ++----
>   2 files changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
> index 4e30d16..3501a94 100644
> --- a/block/qcow2-cluster.c
> +++ b/block/qcow2-cluster.c
> @@ -219,7 +219,8 @@ static uint64_t *l2_allocate(BlockDriverState *bs, int l1_index)
>       BDRVQcowState *s = bs->opaque;
>       int min_index;
>       uint64_t old_l2_offset;
> -    uint64_t *l2_table, l2_offset;
> +    uint64_t *l2_table;
> +    int64_t l2_offset;
>
>       old_l2_offset = s->l1_table[l1_index];
>
> @@ -560,7 +561,8 @@ uint64_t qcow2_alloc_compressed_cluster_offset(BlockDriverState *bs,
>   {
>       BDRVQcowState *s = bs->opaque;
>       int l2_index, ret;
> -    uint64_t l2_offset, *l2_table, cluster_offset;
> +    uint64_t l2_offset, *l2_table;
> +    int64_t cluster_offset;
>       int nb_csectors;
>
>       ret = get_cluster_table(bs, offset,&l2_table,&l2_offset,&l2_index);
> @@ -704,10 +706,8 @@ err:
>    *
>    * Return 0 on success and -errno in error cases
>    */
> -uint64_t qcow2_alloc_cluster_offset(BlockDriverState *bs,
> -                                    uint64_t offset,
> -                                    int n_start, int n_end,
> -                                    int *num, QCowL2Meta *m)
> +int qcow2_alloc_cluster_offset(BlockDriverState *bs, uint64_t offset,
> +    int n_start, int n_end, int *num, QCowL2Meta *m)
>   {
>       BDRVQcowState *s = bs->opaque;
>       int l2_index, ret;
> diff --git a/block/qcow2.h b/block/qcow2.h
> index d9ea6ab..de9397a 100644
> --- a/block/qcow2.h
> +++ b/block/qcow2.h
> @@ -192,10 +192,8 @@ void qcow2_encrypt_sectors(BDRVQcowState *s, int64_t sector_num,
>
>   uint64_t qcow2_get_cluster_offset(BlockDriverState *bs, uint64_t offset,
>       int *num);
> -uint64_t qcow2_alloc_cluster_offset(BlockDriverState *bs,
> -                              uint64_t offset,
> -                              int n_start, int n_end,
> -                              int *num, QCowL2Meta *m);
> +int qcow2_alloc_cluster_offset(BlockDriverState *bs, uint64_t offset,
> +    int n_start, int n_end, int *num, QCowL2Meta *m);
>   uint64_t qcow2_alloc_compressed_cluster_offset(BlockDriverState *bs,
>                                            uint64_t offset,
>                                            int compressed_size);
>

Patch

diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index 4e30d16..3501a94 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -219,7 +219,8 @@  static uint64_t *l2_allocate(BlockDriverState *bs, int l1_index)
     BDRVQcowState *s = bs->opaque;
     int min_index;
     uint64_t old_l2_offset;
-    uint64_t *l2_table, l2_offset;
+    uint64_t *l2_table;
+    int64_t l2_offset;
 
     old_l2_offset = s->l1_table[l1_index];
 
@@ -560,7 +561,8 @@  uint64_t qcow2_alloc_compressed_cluster_offset(BlockDriverState *bs,
 {
     BDRVQcowState *s = bs->opaque;
     int l2_index, ret;
-    uint64_t l2_offset, *l2_table, cluster_offset;
+    uint64_t l2_offset, *l2_table;
+    int64_t cluster_offset;
     int nb_csectors;
 
     ret = get_cluster_table(bs, offset, &l2_table, &l2_offset, &l2_index);
@@ -704,10 +706,8 @@  err:
  *
  * Return 0 on success and -errno in error cases
  */
-uint64_t qcow2_alloc_cluster_offset(BlockDriverState *bs,
-                                    uint64_t offset,
-                                    int n_start, int n_end,
-                                    int *num, QCowL2Meta *m)
+int qcow2_alloc_cluster_offset(BlockDriverState *bs, uint64_t offset,
+    int n_start, int n_end, int *num, QCowL2Meta *m)
 {
     BDRVQcowState *s = bs->opaque;
     int l2_index, ret;
diff --git a/block/qcow2.h b/block/qcow2.h
index d9ea6ab..de9397a 100644
--- a/block/qcow2.h
+++ b/block/qcow2.h
@@ -192,10 +192,8 @@  void qcow2_encrypt_sectors(BDRVQcowState *s, int64_t sector_num,
 
 uint64_t qcow2_get_cluster_offset(BlockDriverState *bs, uint64_t offset,
     int *num);
-uint64_t qcow2_alloc_cluster_offset(BlockDriverState *bs,
-                              uint64_t offset,
-                              int n_start, int n_end,
-                              int *num, QCowL2Meta *m);
+int qcow2_alloc_cluster_offset(BlockDriverState *bs, uint64_t offset,
+    int n_start, int n_end, int *num, QCowL2Meta *m);
 uint64_t qcow2_alloc_compressed_cluster_offset(BlockDriverState *bs,
                                          uint64_t offset,
                                          int compressed_size);