All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] vpc: fix beX_to_cpu() and cpu_to_beX() confusion
@ 2014-09-23  9:40 Stefan Hajnoczi
  2014-09-24 15:17 ` Xiaodong Gong
  2014-09-25  7:43 ` Kevin Wolf
  0 siblings, 2 replies; 3+ messages in thread
From: Stefan Hajnoczi @ 2014-09-23  9:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf, Jeff Cody, pl, Stefan Hajnoczi, Xiaodong Gong

The beX_to_cpu() and cpu_to_beX() functions perform the same operation -
they do a byteswap if the host CPU endianness is little-endian or a
nothing otherwise.

The point of two names for the same operation is that it documents which
direction the data is being converted.  This makes it clear whether the
data is suitable for CPU processing or in its external representation.

This patch fixes incorrect beX_to_cpu()/cpu_to_beX() usage.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 block/vpc.c | 44 ++++++++++++++++++++++----------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/block/vpc.c b/block/vpc.c
index 4947369..e08144a 100644
--- a/block/vpc.c
+++ b/block/vpc.c
@@ -207,7 +207,7 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
             "incorrect.\n", bs->filename);
 
     /* Write 'checksum' back to footer, or else will leave it with zero. */
-    footer->checksum = be32_to_cpu(checksum);
+    footer->checksum = cpu_to_be32(checksum);
 
     // The visible size of a image in Virtual PC depends on the geometry
     // rather than on the size stored in the footer (the size in the footer
@@ -472,7 +472,7 @@ static int64_t alloc_block(BlockDriverState* bs, int64_t sector_num)
 
     // Write BAT entry to disk
     bat_offset = s->bat_offset + (4 * index);
-    bat_value = be32_to_cpu(s->pagetable[index]);
+    bat_value = cpu_to_be32(s->pagetable[index]);
     ret = bdrv_pwrite_sync(bs->file, bat_offset, &bat_value, 4);
     if (ret < 0)
         goto fail;
@@ -699,13 +699,13 @@ static int create_dynamic_disk(BlockDriverState *bs, uint8_t *buf,
      * Note: The spec is actually wrong here for data_offset, it says
      * 0xFFFFFFFF, but MS tools expect all 64 bits to be set.
      */
-    dyndisk_header->data_offset = be64_to_cpu(0xFFFFFFFFFFFFFFFFULL);
-    dyndisk_header->table_offset = be64_to_cpu(3 * 512);
-    dyndisk_header->version = be32_to_cpu(0x00010000);
-    dyndisk_header->block_size = be32_to_cpu(block_size);
-    dyndisk_header->max_table_entries = be32_to_cpu(num_bat_entries);
+    dyndisk_header->data_offset = cpu_to_be64(0xFFFFFFFFFFFFFFFFULL);
+    dyndisk_header->table_offset = cpu_to_be64(3 * 512);
+    dyndisk_header->version = cpu_to_be32(0x00010000);
+    dyndisk_header->block_size = cpu_to_be32(block_size);
+    dyndisk_header->max_table_entries = cpu_to_be32(num_bat_entries);
 
-    dyndisk_header->checksum = be32_to_cpu(vpc_checksum(buf, 1024));
+    dyndisk_header->checksum = cpu_to_be32(vpc_checksum(buf, 1024));
 
     // Write the header
     offset = 512;
@@ -810,36 +810,36 @@ static int vpc_create(const char *filename, QemuOpts *opts, Error **errp)
     memcpy(footer->creator_app, "qemu", 4);
     memcpy(footer->creator_os, "Wi2k", 4);
 
-    footer->features = be32_to_cpu(0x02);
-    footer->version = be32_to_cpu(0x00010000);
+    footer->features = cpu_to_be32(0x02);
+    footer->version = cpu_to_be32(0x00010000);
     if (disk_type == VHD_DYNAMIC) {
-        footer->data_offset = be64_to_cpu(HEADER_SIZE);
+        footer->data_offset = cpu_to_be64(HEADER_SIZE);
     } else {
-        footer->data_offset = be64_to_cpu(0xFFFFFFFFFFFFFFFFULL);
+        footer->data_offset = cpu_to_be64(0xFFFFFFFFFFFFFFFFULL);
     }
-    footer->timestamp = be32_to_cpu(time(NULL) - VHD_TIMESTAMP_BASE);
+    footer->timestamp = cpu_to_be32(time(NULL) - VHD_TIMESTAMP_BASE);
 
     /* Version of Virtual PC 2007 */
-    footer->major = be16_to_cpu(0x0005);
-    footer->minor = be16_to_cpu(0x0003);
+    footer->major = cpu_to_be16(0x0005);
+    footer->minor = cpu_to_be16(0x0003);
     if (disk_type == VHD_DYNAMIC) {
-        footer->orig_size = be64_to_cpu(total_sectors * 512);
-        footer->size = be64_to_cpu(total_sectors * 512);
+        footer->orig_size = cpu_to_be64(total_sectors * 512);
+        footer->size = cpu_to_be64(total_sectors * 512);
     } else {
-        footer->orig_size = be64_to_cpu(total_size);
-        footer->size = be64_to_cpu(total_size);
+        footer->orig_size = cpu_to_be64(total_size);
+        footer->size = cpu_to_be64(total_size);
     }
-    footer->cyls = be16_to_cpu(cyls);
+    footer->cyls = cpu_to_be16(cyls);
     footer->heads = heads;
     footer->secs_per_cyl = secs_per_cyl;
 
-    footer->type = be32_to_cpu(disk_type);
+    footer->type = cpu_to_be32(disk_type);
 
 #if defined(CONFIG_UUID)
     uuid_generate(footer->uuid);
 #endif
 
-    footer->checksum = be32_to_cpu(vpc_checksum(buf, HEADER_SIZE));
+    footer->checksum = cpu_to_be32(vpc_checksum(buf, HEADER_SIZE));
 
     if (disk_type == VHD_DYNAMIC) {
         ret = create_dynamic_disk(bs, buf, total_sectors);
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [PATCH] vpc: fix beX_to_cpu() and cpu_to_beX() confusion
  2014-09-23  9:40 [Qemu-devel] [PATCH] vpc: fix beX_to_cpu() and cpu_to_beX() confusion Stefan Hajnoczi
@ 2014-09-24 15:17 ` Xiaodong Gong
  2014-09-25  7:43 ` Kevin Wolf
  1 sibling, 0 replies; 3+ messages in thread
From: Xiaodong Gong @ 2014-09-24 15:17 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: Kevin Wolf, Jeff Cody, pl, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 5014 bytes --]

no problem, it is look good for me.

On Tue, Sep 23, 2014 at 5:40 PM, Stefan Hajnoczi <stefanha@redhat.com>
wrote:

> The beX_to_cpu() and cpu_to_beX() functions perform the same operation -
> they do a byteswap if the host CPU endianness is little-endian or a
> nothing otherwise.
>
> The point of two names for the same operation is that it documents which
> direction the data is being converted.  This makes it clear whether the
> data is suitable for CPU processing or in its external representation.
>
> This patch fixes incorrect beX_to_cpu()/cpu_to_beX() usage.
>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>  block/vpc.c | 44 ++++++++++++++++++++++----------------------
>  1 file changed, 22 insertions(+), 22 deletions(-)
>
> diff --git a/block/vpc.c b/block/vpc.c
> index 4947369..e08144a 100644
> --- a/block/vpc.c
> +++ b/block/vpc.c
> @@ -207,7 +207,7 @@ static int vpc_open(BlockDriverState *bs, QDict
> *options, int flags,
>              "incorrect.\n", bs->filename);
>
>      /* Write 'checksum' back to footer, or else will leave it with zero.
> */
> -    footer->checksum = be32_to_cpu(checksum);
> +    footer->checksum = cpu_to_be32(checksum);
>
>      // The visible size of a image in Virtual PC depends on the geometry
>      // rather than on the size stored in the footer (the size in the
> footer
> @@ -472,7 +472,7 @@ static int64_t alloc_block(BlockDriverState* bs,
> int64_t sector_num)
>
>      // Write BAT entry to disk
>      bat_offset = s->bat_offset + (4 * index);
> -    bat_value = be32_to_cpu(s->pagetable[index]);
> +    bat_value = cpu_to_be32(s->pagetable[index]);
>      ret = bdrv_pwrite_sync(bs->file, bat_offset, &bat_value, 4);
>      if (ret < 0)
>          goto fail;
> @@ -699,13 +699,13 @@ static int create_dynamic_disk(BlockDriverState *bs,
> uint8_t *buf,
>       * Note: The spec is actually wrong here for data_offset, it says
>       * 0xFFFFFFFF, but MS tools expect all 64 bits to be set.
>       */
> -    dyndisk_header->data_offset = be64_to_cpu(0xFFFFFFFFFFFFFFFFULL);
> -    dyndisk_header->table_offset = be64_to_cpu(3 * 512);
> -    dyndisk_header->version = be32_to_cpu(0x00010000);
> -    dyndisk_header->block_size = be32_to_cpu(block_size);
> -    dyndisk_header->max_table_entries = be32_to_cpu(num_bat_entries);
> +    dyndisk_header->data_offset = cpu_to_be64(0xFFFFFFFFFFFFFFFFULL);
> +    dyndisk_header->table_offset = cpu_to_be64(3 * 512);
> +    dyndisk_header->version = cpu_to_be32(0x00010000);
> +    dyndisk_header->block_size = cpu_to_be32(block_size);
> +    dyndisk_header->max_table_entries = cpu_to_be32(num_bat_entries);
>
> -    dyndisk_header->checksum = be32_to_cpu(vpc_checksum(buf, 1024));
> +    dyndisk_header->checksum = cpu_to_be32(vpc_checksum(buf, 1024));
>
>      // Write the header
>      offset = 512;
> @@ -810,36 +810,36 @@ static int vpc_create(const char *filename, QemuOpts
> *opts, Error **errp)
>      memcpy(footer->creator_app, "qemu", 4);
>      memcpy(footer->creator_os, "Wi2k", 4);
>
> -    footer->features = be32_to_cpu(0x02);
> -    footer->version = be32_to_cpu(0x00010000);
> +    footer->features = cpu_to_be32(0x02);
> +    footer->version = cpu_to_be32(0x00010000);
>      if (disk_type == VHD_DYNAMIC) {
> -        footer->data_offset = be64_to_cpu(HEADER_SIZE);
> +        footer->data_offset = cpu_to_be64(HEADER_SIZE);
>      } else {
> -        footer->data_offset = be64_to_cpu(0xFFFFFFFFFFFFFFFFULL);
> +        footer->data_offset = cpu_to_be64(0xFFFFFFFFFFFFFFFFULL);
>      }
> -    footer->timestamp = be32_to_cpu(time(NULL) - VHD_TIMESTAMP_BASE);
> +    footer->timestamp = cpu_to_be32(time(NULL) - VHD_TIMESTAMP_BASE);
>
>      /* Version of Virtual PC 2007 */
> -    footer->major = be16_to_cpu(0x0005);
> -    footer->minor = be16_to_cpu(0x0003);
> +    footer->major = cpu_to_be16(0x0005);
> +    footer->minor = cpu_to_be16(0x0003);
>      if (disk_type == VHD_DYNAMIC) {
> -        footer->orig_size = be64_to_cpu(total_sectors * 512);
> -        footer->size = be64_to_cpu(total_sectors * 512);
> +        footer->orig_size = cpu_to_be64(total_sectors * 512);
> +        footer->size = cpu_to_be64(total_sectors * 512);
>      } else {
> -        footer->orig_size = be64_to_cpu(total_size);
> -        footer->size = be64_to_cpu(total_size);
> +        footer->orig_size = cpu_to_be64(total_size);
> +        footer->size = cpu_to_be64(total_size);
>      }
> -    footer->cyls = be16_to_cpu(cyls);
> +    footer->cyls = cpu_to_be16(cyls);
>      footer->heads = heads;
>      footer->secs_per_cyl = secs_per_cyl;
>
> -    footer->type = be32_to_cpu(disk_type);
> +    footer->type = cpu_to_be32(disk_type);
>
>  #if defined(CONFIG_UUID)
>      uuid_generate(footer->uuid);
>  #endif
>
> -    footer->checksum = be32_to_cpu(vpc_checksum(buf, HEADER_SIZE));
> +    footer->checksum = cpu_to_be32(vpc_checksum(buf, HEADER_SIZE));
>
>      if (disk_type == VHD_DYNAMIC) {
>          ret = create_dynamic_disk(bs, buf, total_sectors);
> --
> 1.9.3
>
>

[-- Attachment #2: Type: text/html, Size: 6157 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [PATCH] vpc: fix beX_to_cpu() and cpu_to_beX() confusion
  2014-09-23  9:40 [Qemu-devel] [PATCH] vpc: fix beX_to_cpu() and cpu_to_beX() confusion Stefan Hajnoczi
  2014-09-24 15:17 ` Xiaodong Gong
@ 2014-09-25  7:43 ` Kevin Wolf
  1 sibling, 0 replies; 3+ messages in thread
From: Kevin Wolf @ 2014-09-25  7:43 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: Jeff Cody, pl, qemu-devel, Xiaodong Gong

Am 23.09.2014 um 11:40 hat Stefan Hajnoczi geschrieben:
> The beX_to_cpu() and cpu_to_beX() functions perform the same operation -
> they do a byteswap if the host CPU endianness is little-endian or a
> nothing otherwise.
> 
> The point of two names for the same operation is that it documents which
> direction the data is being converted.  This makes it clear whether the
> data is suitable for CPU processing or in its external representation.
> 
> This patch fixes incorrect beX_to_cpu()/cpu_to_beX() usage.
> 
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>

Thanks, applied to the block branch.

Kevin

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-09-25  7:43 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-23  9:40 [Qemu-devel] [PATCH] vpc: fix beX_to_cpu() and cpu_to_beX() confusion Stefan Hajnoczi
2014-09-24 15:17 ` Xiaodong Gong
2014-09-25  7:43 ` Kevin Wolf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.