From 2227bb8330aea1368ba234ae6f24fe0b5779d67d Mon Sep 17 00:00:00 2001 From: Marc Hartmayer Date: Thu, 24 Oct 2019 08:42:11 +0200 Subject: [PATCH] zipl: remove some useless __packed___ attributes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The __packed__ attribute is not needed for these structures as they don't need any padding to meet the size and alignment constraints defined in the Linux for zSeries ABI. Reported by GCC 9.2.1 when building with '-Waddress-of-packed-member'. stage3.c: In function 'is_verified_address': stage3.c:241:26: warning: taking address of packed member of 'struct ipl_rb_components' may result in an unaligned pointer value [-Waddress-of-packed-member] 241 | for_each_rb_entry(comp, comps) { | ^~~~~ stage3.c:18:15: note: in definition of macro 'for_each_rb_entry' 18 | for (entry = rb->entries; \ | ^~ CC zipl/boot/kdump3.o CC zipl/boot/sclp_stage3.o sclp_stage3.c: In function '__sclp_hsa_copy': sclp_stage3.c:75:34: warning: converting a packed 'struct sdias_sccb' pointer (alignment 1) to a 'struct read_sccb' pointer (alignment 4096) may result in an unaligned pointer value [-Waddress-of-packed-member] 75 | if (sclp_hsa_copy_wait((struct read_sccb *)sccb)) | ^~~~~~~~~ In file included from sclp_stage3.c:13: sclp_stage3.h:43:8: note: defined here 43 | struct sdias_sccb { | ^~~~~~~~~~ In file included from sclp_stage3.c:12: sclp.h:149:8: note: defined here 149 | struct read_sccb { | ^~~~~~~~~ sclp_stage3.c: In function 'sclp_hsa_get_size': sclp_stage3.c:126:34: warning: converting a packed 'struct sdias_sccb' pointer (alignment 1) to a 'struct read_sccb' pointer (alignment 4096) may result in an unaligned pointer value [-Waddress-of-packed-member] 126 | if (sclp_hsa_copy_wait((struct read_sccb *)sccb)) | ^~~~~~~~~ In file included from sclp_stage3.c:13: sclp_stage3.h:43:8: note: defined here 43 | struct sdias_sccb { | ^~~~~~~~~~ In file included from sclp_stage3.c:12: sclp.h:149:8: note: defined here 149 | struct read_sccb { | ^~~~~~~~~ Signed-off-by: Marc Hartmayer Reviewed-by: Stefan Haberland Signed-off-by: Jan Höppner --- zipl/boot/sclp.h | 6 ++++-- zipl/boot/sclp_stage3.h | 3 ++- zipl/boot/stage3.h | 6 ++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/zipl/boot/sclp.h b/zipl/boot/sclp.h index ffee5879..2da9d8e3 100644 --- a/zipl/boot/sclp.h +++ b/zipl/boot/sclp.h @@ -53,19 +53,21 @@ struct gds_subvector { uint8_t key; } __packed; +/* Structure must not have any padding */ struct sccb_header { uint16_t length; uint8_t function_code; uint8_t control_mask[3]; uint16_t response_code; -} __packed; +}; +/* Structure must not have any padding */ struct evbuf_header { uint16_t length; uint8_t type; uint8_t flags; uint16_t _reserved; -} __packed; +}; struct mto { uint16_t length; diff --git a/zipl/boot/sclp_stage3.h b/zipl/boot/sclp_stage3.h index ae0c05c3..72c8a58d 100644 --- a/zipl/boot/sclp_stage3.h +++ b/zipl/boot/sclp_stage3.h @@ -40,10 +40,11 @@ struct sdias_evbuf { uint16_t dbs; } __packed; +/* Structure must not have any padding */ struct sdias_sccb { struct sccb_header header; struct sdias_evbuf evbuf; -} __packed; +}; int sclp_hsa_copy(void *, unsigned long, unsigned long); diff --git a/zipl/boot/stage3.h b/zipl/boot/stage3.h index 3a020017..3119e619 100644 --- a/zipl/boot/stage3.h +++ b/zipl/boot/stage3.h @@ -124,11 +124,12 @@ struct ipl_rl_hdr { } __packed; /* IPL Report Block header */ +/* Structure must not have any padding */ struct ipl_rb_hdr { uint32_t len; uint8_t rbt; uint8_t reserved1[11]; -} __packed; +}; /* IPL Report Block types */ enum ipl_rbt { @@ -162,12 +163,13 @@ struct ipl_rb_component_entry { #define IPL_RB_COMPONENT_FLAG_SIGNED 0x80 #define IPL_RB_COMPONENT_FLAG_VERIFIED 0x40 +/* Structure must not have any padding */ struct ipl_rb_components { uint32_t len; uint8_t rbt; uint8_t reserved1[11]; struct ipl_rb_component_entry entries[]; -} __packed; +}; extern unsigned long long _parm_addr; /* address of parmline */ extern unsigned long long _initrd_addr; /* address of initrd */