On 12/7/23 06:28, Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@xxxxxxxx> > > On architectures like i386 that don't enforce natural alignment of u64 > struct members, so the recent change to remove the final 48 bits > reduced the structure size from 32 to 28 bytes: > > include/linux/build_bug.h:78:41: error: static assertion failed: "sizeof(struct ATTR_LIST_ENTRY) == 0x20" > fs/ntfs3/ntfs.h:530:1: note: in expansion of macro 'static_assert' > 530 | static_assert(sizeof(struct ATTR_LIST_ENTRY) == 0x20); > | ^~~~~~~~~~~~~ > > Add an alignment attribute that makes the structure the same across > all architectures again. > > Fixes: d155617006eb ("fs/ntfs3: Fix detected field-spanning write (size 8) of single field "le->name"") > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> Acked-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> Tested-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> # build-tested Thanks. > --- > fs/ntfs3/ntfs.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/ntfs3/ntfs.h b/fs/ntfs3/ntfs.h > index c8981429c721..2d409ac94cbb 100644 > --- a/fs/ntfs3/ntfs.h > +++ b/fs/ntfs3/ntfs.h > @@ -525,7 +525,7 @@ struct ATTR_LIST_ENTRY { > __le16 id; // 0x18: struct ATTRIB ID. > __le16 name[]; // 0x1A: To get real name use name_off. > > -}; // sizeof(0x20) > +} __aligned((8)); // sizeof(0x20) > > static_assert(sizeof(struct ATTR_LIST_ENTRY) == 0x20); > -- ~Randy