aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2011-04-11 23:02:11 -0700
committerEric W. Biederman <ebiederm@xmission.com>2011-04-12 14:41:24 -0700
commit787ca77736848e5d3967e5823d009cfe1ddcb833 (patch)
treeab566f44e13c4dfd83dd13a3bb51777674b2e2f2
parentabf7a9d75878f7eac2fc363d934fce52fa33f532 (diff)
downloadsyslinux-devel-787ca77736848e5d3967e5823d009cfe1ddcb833.tar.gz
syslinux-devel-787ca77736848e5d3967e5823d009cfe1ddcb833.tar.xz
syslinux-devel-787ca77736848e5d3967e5823d009cfe1ddcb833.zip
core: pxe: Cleanup properly when using undi.
Unhook the interrupt handler and stop the undi processing to make it save to exit, and allows unload_pxe to start succeeding again. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
-rw-r--r--core/fs/pxe/pxe.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/core/fs/pxe/pxe.c b/core/fs/pxe/pxe.c
index 96c6e7b5..50f205f7 100644
--- a/core/fs/pxe/pxe.c
+++ b/core/fs/pxe/pxe.c
@@ -1420,6 +1420,8 @@ void unload_pxe(void)
uint16_t Status; /* All calls have this as the first member */
} unload_call;
+ pxe_cleanup_isr();
+
dprintf("FBM before unload = %d\n", BIOS_fbm);
err = reset_pxe();
@@ -1438,7 +1440,8 @@ void unload_pxe(void)
memset(&unload_call, 0, sizeof unload_call);
err = pxe_call(api, &unload_call);
if (err || unload_call.Status != PXENV_STATUS_SUCCESS) {
- dprintf("PXE unload API call %04x failed\n", api);
+ dprintf("PXE unload API call %04x failed: 0x%x\n",
+ api, unload_call.Status);
goto cant_free;
}
}