mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 12:44:03 +02:00
s390/ipl: Fix NULL deref in kdump without re-IPL parm block
Some IPL types, like HMC FTP boot or QEMU direct kernel boot, might not provide an IPL parameter block. In this case, reipl_type_init() selects IPL_TYPE_UNKNOWN, and reipl_block_actual remains NULL. kdump passes the re-IPL parameter block to the dump kernel through os_info. Before commit3b9678472b("s390/ipl: correct kdump reipl block checksum calculation"), the os_info entry was added only for IPL types which initialized reipl_block_actual. That commit moved the os_info update to machine_crash_shutdown(), making it unconditional. As a result, set_os_info_reipl_block() dereferences reipl_block_actual for IPL_TYPE_UNKNOWN. This may happen to work by chance when address zero contains readable lowcore data and the resulting empty os_info entry is ignored by the dump kernel. Skip the os_info update when no re-IPL parameter block is available. Kdump then collect the dump and reboot without setting re-IPL parameter block. Fixes:3b9678472b("s390/ipl: correct kdump reipl block checksum calculation") Reviewed-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
parent
f3c63b8cab
commit
7f91887111
|
|
@ -1157,6 +1157,8 @@ static struct attribute_group reipl_nss_attr_group = {
|
|||
|
||||
void set_os_info_reipl_block(void)
|
||||
{
|
||||
if (!reipl_block_actual)
|
||||
return;
|
||||
os_info_entry_add_data(OS_INFO_REIPL_BLOCK, reipl_block_actual,
|
||||
reipl_block_actual->hdr.len);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user