From 517edd4527b9b4bd33aa18c8c6edecf20a9a992f Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Fri, 4 Sep 2009 15:46:43 -0700 Subject: [PATCH] core: add missing calls to cleanup_hardware As we're starting to rely more and more on a modified hardware state, it is really important to clean up on all exit paths. Signed-off-by: H. Peter Anvin --- core/localboot.inc | 3 +++ core/pxelinux.asm | 1 + core/runkernel.inc | 2 ++ 3 files changed, 6 insertions(+) diff --git a/core/localboot.inc b/core/localboot.inc index ae54737..6709b3b 100644 --- a/core/localboot.inc +++ b/core/localboot.inc @@ -31,6 +31,9 @@ local_boot: mov gs,dx mov si,localboot_msg call writestr + push ax + call cleanup_hardware + pop ax cmp ax,-1 je .int18 diff --git a/core/pxelinux.asm b/core/pxelinux.asm index b274514..2fb0e08 100644 --- a/core/pxelinux.asm +++ b/core/pxelinux.asm @@ -864,6 +864,7 @@ local_boot: mov si,localboot_msg call writestr_early ; Restore the environment we were called with + call cleanup_hardware lss sp,[InitStack] pop gs pop fs diff --git a/core/runkernel.inc b/core/runkernel.inc index 8bfc8b8..ac00342 100644 --- a/core/runkernel.inc +++ b/core/runkernel.inc @@ -461,6 +461,8 @@ run_linux_kernel: ; Set up segment registers and the Linux real-mode stack ; Note: ds == the real mode segment ; + call cleanup_hardware + cli mov ax,ds mov ss,ax -- 2.7.4