btrfs-progs: fix in-place byte swapping
authorZach Brown <zab@redhat.com>
Wed, 14 Aug 2013 23:16:39 +0000 (16:16 -0700)
committerDavid Sterba <dsterba@suse.cz>
Tue, 3 Sep 2013 17:41:06 +0000 (19:41 +0200)
Storing fixed-endian values in native cpu types defeats the purpose of
using sparse endian types to find endian conversion bugs.

Signed-off-by: Zach Brown <zab@redhat.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
print-tree.c
uuid-tree.c

index 761448d..913b1bb 100644 (file)
@@ -688,11 +688,11 @@ static void print_uuid_item(struct extent_buffer *l, unsigned long offset,
                return;
        }
        while (item_size) {
-               u64 subvol_id;
+               __le64 subvol_id;
 
                read_extent_buffer(l, &subvol_id, offset, sizeof(u64));
-               subvol_id = le64_to_cpu(subvol_id);
-               printf("\t\tsubvol_id %llu\n", (unsigned long long)subvol_id);
+               printf("\t\tsubvol_id %llu\n",
+                       (unsigned long long)le64_to_cpu(subvol_id));
                item_size -= sizeof(u64);
                offset += sizeof(u64);
        }
index 3a4c48e..39c3f3f 100644 (file)
@@ -43,6 +43,7 @@ static int btrfs_uuid_tree_lookup_any(int fd, const u8 *uuid, u8 type,
        struct btrfs_ioctl_search_args search_arg;
        struct btrfs_ioctl_search_header *search_header;
        u32 item_size;
+       __le64 lesubid;
 
        btrfs_uuid_to_key(uuid, &key_objectid, &key_offset);
 
@@ -82,8 +83,8 @@ static int btrfs_uuid_tree_lookup_any(int fd, const u8 *uuid, u8 type,
        }
 
        /* return first stored id */
-       memcpy(subid, search_header + 1, sizeof(*subid));
-       *subid = le64_to_cpu(*subid);
+       memcpy(&lesubid, search_header + 1, sizeof(lesubid));
+       *subid = le64_to_cpu(lesubid);
 
 out:
        return ret;