[int13con] Avoid overwriting random portions of SAN boot disks
authorMichael Brown <mcb30@ipxe.org>
Mon, 27 Mar 2017 07:50:59 +0000 (10:50 +0300)
committerMichael Brown <mcb30@ipxe.org>
Mon, 27 Mar 2017 07:50:59 +0000 (10:50 +0300)
commitc73af29fe206dda55a72119b6b29c5628aa09ed1
tree38a0dcad6a8ac013e82e48943c73239bf9a479cc
parentebceb8ad8a5c3ad58ecbe513174c3620592d5976
[int13con] Avoid overwriting random portions of SAN boot disks

The INT13 console type (CONSOLE_INT13) autodetects at initialisation
time a magic partition to be used for logging iPXE console output.  If
the INT13 drive number mapping is subsequently changed (e.g. because
iPXE was used to perform a SAN boot), then the console logging output
will be written to the incorrect disk.

Fix by recording the INT13 vector at initialisation time, and using
this original vector to emulate INT13 calls for all subsequent
accesses.  This should be robust against drive remapping performed
either by ourselves or by another bootloader (e.g. a chainloaded
undionly.kpxe which then performs a SAN boot).

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/arch/x86/interface/pcbios/int13con.c