File s390-tools-sles15sp2-02-zipl-fix-Waddress-of-packed-member.patch of Package s390-tools.15659

Subject: [PATCH] [FEAT VS1804] zipl: fix -Waddress-of-packed-member
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: aa09b292483eb2d79247260fccc2b456dee01e8d
Problem-ID:  VS1804

Upstream-Description:

             zipl: fix -Waddress-of-packed-member

             Reported by GCC 9.2.1 when building with '-Waddress-of-packed-member'.

             menu.c: In function 'menu_read':
             menu.c:30:22: warning: taking address of packed member of 'struct boot_stage2_params' may result in an unaligned pointer value [-Waddress-of-packed-member]
                30 |  uint16_t *configs = __stage2_params.config;
                   |                      ^~~~~~~~~~~~~~~
             menu.c: In function 'menu_list':
             menu.c:83:22: warning: taking address of packed member of 'struct boot_stage2_params' may result in an unaligned pointer value [-Waddress-of-packed-member]
                83 |  uint16_t *configs = __stage2_params.config;
                   |                      ^~~~~~~~~~~~~~~
             menu.c: In function 'menu':
             menu.c:139:22: warning: taking address of packed member of 'struct boot_stage2_params' may result in an unaligned pointer value [-Waddress-of-packed-member]
               139 |  uint16_t *configs = __stage2_params.config;
                   |                      ^~~~~~~~~~~~~~~

             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/menu.c |   13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

--- a/zipl/boot/menu.c
+++ b/zipl/boot/menu.c
@@ -27,7 +27,6 @@ static void menu_prompt(int timeout)
 static int menu_read(void)
 {
 	char *temp_area =  (char *)get_zeroed_page();
-	uint16_t *configs = __stage2_params.config;
 	int timeout, rc, i, count = 0;
 	char *endptr;
 	int value;
@@ -60,7 +59,7 @@ static int menu_read(void)
 		value = ebcstrtoul((char *)temp_area, &endptr, 10);
 
 		if ((endptr != temp_area) && (value < BOOT_MENU_ENTRIES - 1) &&
-		    (configs[value] != 0)) {
+		    (__stage2_params.config[value] != 0)) {
 			/* valid config found - finish */
 			break;
 		} else {
@@ -80,14 +79,13 @@ out_free_page:
 
 static int menu_list(void)
 {
-	uint16_t *configs = __stage2_params.config;
 	char *name;
 	int i;
 
 	for (i = 0; i < BOOT_MENU_ENTRIES; i++) {
-		if (configs[i] == 0)
+		if (__stage2_params.config[i] == 0)
 			continue;
-		name = configs[i] + ((void *)&__stage2_params);
+		name = __stage2_params.config[i] + ((void *)&__stage2_params);
 		printf("%s\n", name);
 		if (i == 0)
 			printf("\n");
@@ -136,7 +134,6 @@ static int menu_param(unsigned long *val
 
 int menu(void)
 {
-	uint16_t *configs = __stage2_params.config;
 	unsigned long value = 0;
 	char *cmd_line_extra;
 	char endstring[15];
@@ -181,11 +178,11 @@ int menu(void)
 
 boot:
 	/* sanity - config entry not valid */
-	if (configs[value] == 0)
+	if (__stage2_params.config[value] == 0)
 		panic(EINTERNAL, "%s", msg_econfig);
 
 	printf("Booting %s\n",
-	       (char *)(configs[value] +
+	       (char *)(__stage2_params.config[value] +
 			(void *)&__stage2_params + TEXT_OFFSET));
 
 	/* append 'BOOT_IMAGE=<num>' to parmline */
openSUSE Build Service is sponsored by