summaryrefslogtreecommitdiffstats
path: root/src/interface/efi/efi_autoboot.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interface/efi/efi_autoboot.c')
-rw-r--r--src/interface/efi/efi_autoboot.c22
1 files changed, 5 insertions, 17 deletions
diff --git a/src/interface/efi/efi_autoboot.c b/src/interface/efi/efi_autoboot.c
index a103c2f19..9e0c3e42e 100644
--- a/src/interface/efi/efi_autoboot.c
+++ b/src/interface/efi/efi_autoboot.c
@@ -22,6 +22,7 @@
*/
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+FILE_SECBOOT ( PERMITTED );
#include <string.h>
#include <errno.h>
@@ -48,30 +49,21 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
*/
int efi_set_autoboot_ll_addr ( EFI_HANDLE device,
EFI_DEVICE_PATH_PROTOCOL *path ) {
- EFI_BOOT_SERVICES *bs = efi_systab->BootServices;
- union {
- EFI_SIMPLE_NETWORK_PROTOCOL *snp;
- void *interface;
- } snp;
+ EFI_SIMPLE_NETWORK_PROTOCOL *snp;
EFI_SIMPLE_NETWORK_MODE *mode;
- EFI_STATUS efirc;
unsigned int vlan;
int rc;
/* Look for an SNP instance on the image's device handle */
- if ( ( efirc = bs->OpenProtocol ( device,
- &efi_simple_network_protocol_guid,
- &snp.interface, efi_image_handle,
- NULL,
- EFI_OPEN_PROTOCOL_GET_PROTOCOL ))!=0){
- rc = -EEFI ( efirc );
+ if ( ( rc = efi_open ( device, &efi_simple_network_protocol_guid,
+ &snp ) ) != 0 ) {
DBGC ( device, "EFI %s has no SNP instance: %s\n",
efi_handle_name ( device ), strerror ( rc ) );
return rc;
}
/* Record autoboot device */
- mode = snp.snp->Mode;
+ mode = snp->Mode;
vlan = efi_path_vlan ( path );
set_autoboot_ll_addr ( &mode->CurrentAddress, mode->HwAddressSize,
vlan );
@@ -90,9 +82,5 @@ int efi_set_autoboot_ll_addr ( EFI_HANDLE device,
efi_handle_name ( device ), vlan );
}
- /* Close protocol */
- bs->CloseProtocol ( device, &efi_simple_network_protocol_guid,
- efi_image_handle, NULL );
-
return 0;
}