@@ -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);
}
@@ -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;
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> --- print-tree.c | 6 +++--- uuid-tree.c | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-)