diff options
author | Maxim Samoylov <max7255@linux.vnet.ibm.com> | 2015-10-12 17:50:20 +0200 |
---|---|---|
committer | Cornelia Huck <cornelia.huck@de.ibm.com> | 2015-11-11 17:21:39 +0100 |
commit | ba21f0cca8165c5b284274edd12dc955cf4fb248 (patch) | |
tree | 6a80ef303c990410f17af27df49c3d8831465720 /pc-bios/s390-ccw/bootmap.c | |
parent | 866cac91e06219f473a2900eefef0d1cf242b136 (diff) |
pc-bios/s390-ccw: El Torito s390x boot entry check
Boot entry is considered compatible if boot image is Linux kernel
with matching S390 Linux magic string.
Empty boot images with sector_count == 0 are considered broken.
Signed-off-by: Maxim Samoylov <max7255@linux.vnet.ibm.com>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Diffstat (limited to 'pc-bios/s390-ccw/bootmap.c')
-rw-r--r-- | pc-bios/s390-ccw/bootmap.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c index 7c8dce154a..82cca9c9e8 100644 --- a/pc-bios/s390-ccw/bootmap.c +++ b/pc-bios/s390-ccw/bootmap.c @@ -450,7 +450,16 @@ static void ipl_scsi(void) static bool is_iso_bc_entry_compatible(IsoBcSection *s) { - return true; + uint8_t *magic_sec = (uint8_t *)(sec + ISO_SECTOR_SIZE); + + if (s->unused || !s->sector_count) { + return false; + } + read_iso_sector(bswap32(s->load_rba), magic_sec, + "Failed to read image sector 0"); + + /* Checking bytes 8 - 32 for S390 Linux magic */ + return !_memcmp(magic_sec + 8, linux_s390_magic, 24); } static void load_iso_bc_entry(IsoBcSection *load) |