From: Christoph Hellwig Date: Wed, 10 Aug 2016 01:29:36 +0000 (+1000) Subject: xfs: remove __arch_pack X-Git-Tag: v4.8.0-rc1~96 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=34f7aca6aae9aac7ba7d8100a54a36607cc0f406;p=thirdparty%2Fxfsprogs-dev.git xfs: remove __arch_pack Source kernel commit: aa2dd0ad4d6d7dd85bb13ed64b872803be046f96 Instead we always declare struct xfs_dir2_sf_hdr as packed. That's the expected layout, and while most major architectures do the packing by default the new structure size and offset checker showed that not only the ARM old ABI got this wrong, but various minor embedded architectures did as well. [Verified that no code change on x86-64 results from this change] Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner --- diff --git a/include/xfs.h b/include/xfs.h index 7bed95733..c878b2470 100644 --- a/include/xfs.h +++ b/include/xfs.h @@ -54,6 +54,13 @@ #define __user #endif +/* + * kernel struct packing shortcut + */ +#ifndef __packed +#define __packed __attribute__((packed)) +#endif + #include #include diff --git a/include/xfs_arch.h b/include/xfs_arch.h index 87650f100..6e3172c67 100644 --- a/include/xfs_arch.h +++ b/include/xfs_arch.h @@ -278,11 +278,4 @@ static inline void put_unaligned_be64(__uint64_t val, void *p) put_unaligned_be32(val, p + 4); } -/* ARM old ABI has some weird alignment/padding */ -#if defined(__arm__) && !defined(__ARM_EABI__) -#define __arch_pack __attribute__((packed)) -#else -#define __arch_pack -#endif - #endif /* __XFS_ARCH_H__ */ diff --git a/libxfs/xfs_da_format.h b/libxfs/xfs_da_format.h index f877bb17c..685f23b67 100644 --- a/libxfs/xfs_da_format.h +++ b/libxfs/xfs_da_format.h @@ -229,7 +229,7 @@ typedef struct xfs_dir2_sf_hdr { __uint8_t count; /* count of entries */ __uint8_t i8count; /* count of 8-byte inode #s */ __uint8_t parent[8]; /* parent dir inode number */ -} __arch_pack xfs_dir2_sf_hdr_t; +} __packed xfs_dir2_sf_hdr_t; typedef struct xfs_dir2_sf_entry { __u8 namelen; /* actual name length */