]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.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)
committerStefan Bader <stefan.bader@canonical.com>
Wed, 19 May 2021 08:32:31 +0000 (10:32 +0200)
BugLink: https://bugs.launchpad.net/bugs/1928857
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>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/md/persistent-data/dm-btree-internal.h
drivers/md/persistent-data/dm-space-map-common.h

index 564896659dd44609e679162aff1e948a0e00d4d0..21d1a17e77c968800c1abf5641d6f1d0a86be318 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[];
-} __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,