mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-19 05:31:32 +00:00
efi_loader: UninstallMultipleProtocolInterfaces error code
If UninstallMultipleProtocolInterfaces fails, we sometimes return the wrong status code. The UEFI spec mandates to always return EFI_INVALID_PARAMETER. Update unit test. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
87fc275cac
commit
e2373021f6
2 changed files with 17 additions and 4 deletions
|
@ -2414,7 +2414,8 @@ static efi_status_t EFIAPI efi_uninstall_multiple_protocol_interfaces(
|
||||||
}
|
}
|
||||||
efi_va_end(argptr);
|
efi_va_end(argptr);
|
||||||
|
|
||||||
return EFI_EXIT(r);
|
/* In case of an error always return EFI_INVALID_PARAMETER */
|
||||||
|
return EFI_EXIT(EFI_INVALID_PARAMETER);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -189,7 +189,14 @@ static int execute(void)
|
||||||
/*
|
/*
|
||||||
* Test error handling in UninstallMultipleProtocols
|
* Test error handling in UninstallMultipleProtocols
|
||||||
*
|
*
|
||||||
* Try to uninstall more protocols than there are installed.
|
* These are the installed protocol interfaces on handle 2:
|
||||||
|
*
|
||||||
|
* guid1 interface4
|
||||||
|
* guid2 interface2
|
||||||
|
*
|
||||||
|
* Try to uninstall more protocols than there are installed. This
|
||||||
|
* should return an error EFI_INVALID_PARAMETER. All deleted protocols
|
||||||
|
* should be reinstalled.
|
||||||
*/
|
*/
|
||||||
ret = boottime->uninstall_multiple_protocol_interfaces(
|
ret = boottime->uninstall_multiple_protocol_interfaces(
|
||||||
handle2,
|
handle2,
|
||||||
|
@ -197,13 +204,18 @@ static int execute(void)
|
||||||
&guid2, &interface2,
|
&guid2, &interface2,
|
||||||
&guid3, &interface3,
|
&guid3, &interface3,
|
||||||
NULL);
|
NULL);
|
||||||
if (ret == EFI_SUCCESS) {
|
if (ret != EFI_INVALID_PARAMETER) {
|
||||||
|
printf("%lx", ret);
|
||||||
efi_st_error("UninstallMultipleProtocolInterfaces did not catch error\n");
|
efi_st_error("UninstallMultipleProtocolInterfaces did not catch error\n");
|
||||||
return EFI_ST_FAILURE;
|
return EFI_ST_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Test LocateHandleBuffer with ByProtocol
|
* Test LocateHandleBuffer with ByProtocol
|
||||||
|
*
|
||||||
|
* These are the handles with a guid1 protocol interface installed:
|
||||||
|
*
|
||||||
|
* handle1, handle2
|
||||||
*/
|
*/
|
||||||
count = buffer_size;
|
count = buffer_size;
|
||||||
ret = boottime->locate_handle_buffer(BY_PROTOCOL, &guid1, NULL,
|
ret = boottime->locate_handle_buffer(BY_PROTOCOL, &guid1, NULL,
|
||||||
|
@ -213,7 +225,7 @@ static int execute(void)
|
||||||
return EFI_ST_FAILURE;
|
return EFI_ST_FAILURE;
|
||||||
}
|
}
|
||||||
if (count != 2) {
|
if (count != 2) {
|
||||||
efi_st_error("LocateHandleBuffer failed to locate new handles\n");
|
efi_st_error("UninstallMultipleProtocolInterfaces deleted handle\n");
|
||||||
return EFI_ST_FAILURE;
|
return EFI_ST_FAILURE;
|
||||||
}
|
}
|
||||||
ret = find_in_buffer(handle1, count, buffer);
|
ret = find_in_buffer(handle1, count, buffer);
|
||||||
|
|
Loading…
Add table
Reference in a new issue