mirror of https://gitee.com/openkylin/qemu.git
pc-bios/s390-ccw: fix sclp_get_loadparm_ascii
The existing s390 bios gets the LOADPARM information from the system using an SCLP call that specifies a buffer length too small to contain all the output. The recent fixes in the SCLP code have exposed this bug, since now the SCLP call will return an error (as per architecture) instead of writing partially and completing successfully. The solution is simply to specify the full page length as the SCCB length instead of a smaller size. Fixes:832be0d8a3
("s390x: sclp: Report insufficient SCCB length") Fixes:9a22473c70
("pc-bios/s390-ccw: get LOADPARM stored in SCP Read Info") Reported-by: Marc Hartmayer <mhartmay@linux.ibm.com> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Message-Id: <1574944437-31182-1-git-send-email-imbrenda@linux.ibm.com> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> Tested-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Janosch Frank <frankja@linux.ibm.com> Tested-by: Marc Hartmayer <mhartmay@linux.ibm.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
1a61a081ac
commit
f24ec9fead
|
@ -112,7 +112,7 @@ void sclp_get_loadparm_ascii(char *loadparm)
|
|||
ReadInfo *sccb = (void *)_sccb;
|
||||
|
||||
memset((char *)_sccb, 0, sizeof(ReadInfo));
|
||||
sccb->h.length = sizeof(ReadInfo);
|
||||
sccb->h.length = SCCB_SIZE;
|
||||
if (!sclp_service_call(SCLP_CMDW_READ_SCP_INFO, sccb)) {
|
||||
ebcdic_to_ascii((char *) sccb->loadparm, loadparm, LOADPARM_LEN);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue