[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: |
Collin Walling |
Subject: |
Re: [Qemu-devel] [qemu-s390x] [PATCH 2/4] pc-bios/s390-ccw: fix loadparm initialization and int conversion |
Date: |
Mon, 16 Apr 2018 10:31:24 -0400 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 |
On 04/16/2018 08:27 AM, Thomas Huth wrote:
> 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
>
Can do.
--
Respectfully,
- Collin Walling
- [Qemu-devel] [PATCH v2 0/4] Small fixes for s390x QEMU boot menu, Collin Walling, 2018/04/13
- [Qemu-devel] [PATCH 1/4] pc-bios/s390-ccw: rename MAX_TABLE_ENTRIES to MAX_BOOT_ENTRIES, Collin Walling, 2018/04/13
- [Qemu-devel] [PATCH 2/4] pc-bios/s390-ccw: fix loadparm initialization and int conversion, Collin Walling, 2018/04/13
- [Qemu-devel] [PATCH 3/4] pc-bios/s390-ccw: fix non-sequential boot entries (eckd), Collin Walling, 2018/04/13
- [Qemu-devel] [PATCH 4/4] pc-bios/s390-ccw: fix non-sequential boot entries (enum), Collin Walling, 2018/04/13
- Re: [Qemu-devel] [PATCH v2 0/4] Small fixes for s390x QEMU boot menu, Janosch Frank, 2018/04/16