]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
dm persistent data: packed struct should have an aligned() attribute too
authorJoe Thornber <ejt@redhat.com>
Mon, 29 Mar 2021 15:34:57 +0000 (16:34 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 22 May 2021 08:38:20 +0000 (10:38 +0200)
commit a88b2358f1da2c9f9fcc432f2e0a79617fea397c upstream.

Otherwise most non-x86 architectures (e.g. riscv, arm) will resort to
byte-by-byte access.

Cc: stable@vger.kernel.org
Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/md/persistent-data/dm-btree-internal.h
drivers/md/persistent-data/dm-space-map-common.h

index a240990a7f3339047e45a4b45087a8a3d0ca30fe..5673f8eb5f88f8f3a67ba5ab80029fe721f03e35 100644 (file)
@@ -34,12 +34,12 @@ struct node_header {
        __le32 max_entries;
        __le32 value_size;
        __le32 padding;
-} __packed;
+} __attribute__((packed, aligned(8)));
 
 struct btree_node {
        struct node_header header;
        __le64 keys[0];
-} __packed;
+} __attribute__((packed, aligned(8)));
 
 
 /*
index 8de63ce39bdd53d099cb91eb50647f0d703d727a..87e17909ef5210729ff13b5594d0be82137deb36 100644 (file)
@@ -33,7 +33,7 @@ struct disk_index_entry {
        __le64 blocknr;
        __le32 nr_free;
        __le32 none_free_before;
-} __packed;
+} __attribute__ ((packed, aligned(8)));
 
 
 #define MAX_METADATA_BITMAPS 255
@@ -43,7 +43,7 @@ struct disk_metadata_index {
        __le64 blocknr;
 
        struct disk_index_entry index[MAX_METADATA_BITMAPS];
-} __packed;
+} __attribute__ ((packed, aligned(8)));
 
 struct ll_disk;
 
@@ -86,7 +86,7 @@ struct disk_sm_root {
        __le64 nr_allocated;
        __le64 bitmap_root;
        __le64 ref_count_root;
-} __packed;
+} __attribute__ ((packed, aligned(8)));
 
 #define ENTRIES_PER_BYTE 4
 
@@ -94,7 +94,7 @@ struct disk_bitmap_header {
        __le32 csum;
        __le32 not_used;
        __le64 blocknr;
-} __packed;
+} __attribute__ ((packed, aligned(8)));
 
 enum allocation_event {
        SM_NONE,