2
0
mirror of https://github.com/xcat2/xNBA.git synced 2024-12-04 02:24:35 +00:00

[pxe] Check for unhookable interrupts in PXENV_STOP_UNDI

PXENV_STOP_UNDI should return PXENV_STATUS_KEEP_UNDI if the UNDI
cannot be safely unloaded (e.g. due to interrupt vectors that could
not be unhooked).
This commit is contained in:
Michael Brown 2009-06-28 20:12:16 +01:00
parent 07b5be3341
commit ee1d315ac0

View File

@ -37,6 +37,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
#include <gpxe/init.h>
#include <gpxe/if_ether.h>
#include <basemem_packet.h>
#include <biosint.h>
#include "pxe.h"
#include "pxe_call.h"
@ -316,6 +317,14 @@ PXENV_EXIT_t pxenv_stop_undi ( struct s_PXENV_STOP_UNDI *stop_undi ) {
/* Prepare for unload */
shutdown ( SHUTDOWN_BOOT );
/* Check to see if we still have any hooked interrupts */
if ( hooked_bios_interrupts != 0 ) {
DBG ( "PXENV_STOP_UNDI failed: %d interrupts still hooked\n",
hooked_bios_interrupts );
stop_undi->Status = PXENV_STATUS_KEEP_UNDI;
return PXENV_EXIT_FAILURE;
}
stop_undi->Status = PXENV_STATUS_SUCCESS;
return PXENV_EXIT_SUCCESS;
}