diff options
| author | Michael Brown | 2014-03-05 13:25:21 +0100 |
|---|---|---|
| committer | Michael Brown | 2014-03-05 13:32:00 +0100 |
| commit | 1137fa32687cd0e1784683318a5381c41856a531 (patch) | |
| tree | 74d0bbb61e61a1a6243118d2d50119a67a8072f9 /src/net | |
| parent | [realtek] Include link status register details in debug messages (diff) | |
| download | ipxe-1137fa32687cd0e1784683318a5381c41856a531.tar.gz ipxe-1137fa32687cd0e1784683318a5381c41856a531.tar.xz ipxe-1137fa32687cd0e1784683318a5381c41856a531.zip | |
[romprefix] Do not clobber stack segment when returning to BIOS
Commit c429bf0 ("[romprefix] Store boot bus:dev.fn address as autoboot
device location") introduced a regression by using register %cx to
temporarily hold the PCI bus:dev.fn address, despite the fact that %cx
was already being used to hold the stored BIOS stack segment.
Consequently, when returning to the BIOS after a failed or cancelled
boot attempt, iPXE would end up calling INT 18 with the stack segment
set equal to the PCI bus:dev.fn address. Writing to essentially
random areas of memory tends to upset even the more robust BIOSes.
Fix by using register %ax to temporarily hold the PCI bus:dev.fn
address.
Reported-by: Anton D. Kachalov <mouse@yandex-team.ru>
Tested-by: Anton D. Kachalov <mouse@yandex-team.ru>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/net')
0 files changed, 0 insertions, 0 deletions
