File s390-tools-sles15sp2-03-zipl-remove-some-useless-__packed___-attributes.patch of Package s390-tools.17667

Subject: [PATCH] [FEAT VS1804] zipl: remove some useless __packed___ attributes
From: Marc Hartmayer <mhartmay@linux.ibm.com>

Summary:     genprotimg: Introduce new tool for the creation of PV images
Description: genprotimg takes a kernel, host-key documents, optionally an
             initrd, optionally a file with the kernel command line, and it
             generates a single, loadable image file. The image consists of a
             concatenation of a plain text boot loader, the encrypted
             components for kernel, initrd, and cmdline, and the
             integrity-protected PV header, containing metadata necessary for
             running the guest in PV mode. It's possible to use this image file
             as a kernel for zIPL or for a direct kernel boot using QEMU.
Upstream-ID: 2227bb8330aea1368ba234ae6f24fe0b5779d67d
Problem-ID:  VS1804

Upstream-Description:

             zipl: remove some useless __packed___ attributes

             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 <mhartmay@linux.ibm.com>
             Reviewed-by: Stefan Haberland <sth@linux.ibm.com>
             Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>


Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
---
 zipl/boot/sclp.h        |    6 ++++--
 zipl/boot/sclp_stage3.h |    3 ++-
 zipl/boot/stage3.h      |    6 ++++--
 3 files changed, 10 insertions(+), 5 deletions(-)

--- 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;
--- 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);
--- 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 */
openSUSE Build Service is sponsored by