qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [qemu-s390x] [PATCH 2/4] pc-bios/s390-ccw: fix loadparm


From: Thomas Huth
Subject: Re: [Qemu-devel] [qemu-s390x] [PATCH 2/4] pc-bios/s390-ccw: fix loadparm initialization and int conversion
Date: Mon, 16 Apr 2018 14:27:40 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0

On 14.04.2018 00:08, Collin Walling wrote:
> Rename the loadparm char array in main.c to loadparm_str and
> increased the size by one byte to account for a null termination
> when converting the loadparm string to an int  via atoui. We
> also allow the boot menu to be enabled when loadparm is set to
> an empty string or a series of spaces.
> 
> Signed-off-by: Collin Walling <address@hidden>
> Reported-by: Vasily Gorbik <address@hidden>
> Reviewed-by: Thomas Huth <address@hidden>
> ---
>  hw/s390x/ipl.c          |  2 ++
>  pc-bios/s390-ccw/main.c | 14 +++++++-------
>  2 files changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c
> index fdeaec3..23b5b54 100644
> --- a/hw/s390x/ipl.c
> +++ b/hw/s390x/ipl.c
> @@ -352,6 +352,8 @@ int s390_ipl_set_loadparm(uint8_t *loadparm)
>              loadparm[i] = ascii2ebcdic[(uint8_t) lp[i]];
>          }
>  
> +        memset(loadparm + i, 0x40, 8 - i); /* fill with EBCDIC spaces */
> +
>          g_free(lp);
>          return 0;
>      }

When compiling this code, my GCC (v4.8.5) complains:

  CC      s390x-softmmu/hw/s390x/ipl.o
In file included from /usr/include/string.h:638:0,
                 from /home/thuth/devel/qemu/include/qemu/osdep.h:69,
                 from /home/thuth/devel/qemu/hw/s390x/ipl.c:14:
In function ‘memset’,
    inlined from ‘s390_ipl_set_loadparm’ at
/home/thuth/devel/qemu/hw/s390x/ipl.c:376:15:
/usr/include/bits/string3.h:81:30: error: call to
‘__warn_memset_zero_len’ declared with attribute warning: memset used
with constant zero length parameter; this could be due to transposed
parameters [-Werror]
       __warn_memset_zero_len ();

I guess this might happen due to some internal loop unrolling of GCC or
something similar ... to make sure that we can compile the code also
without warnings, could you please add a check around the memset à la:

    if (i < 8) {
        memset(loadparm + i, 0x40, 8 - i); /* fill with EBCDIC spaces */
    }

 Thanks,
  Thomas



reply via email to

[Prev in Thread] Current Thread [Next in Thread]