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
					
				|  | @ -2414,7 +2414,8 @@ static efi_status_t EFIAPI efi_uninstall_multiple_protocol_interfaces( | |||
| 	} | ||||
| 	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 | ||||
| 	 * | ||||
| 	 * 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( | ||||
| 						handle2, | ||||
|  | @ -197,13 +204,18 @@ static int execute(void) | |||
| 						&guid2, &interface2, | ||||
| 						&guid3, &interface3, | ||||
| 						NULL); | ||||
| 	if (ret == EFI_SUCCESS) { | ||||
| 	if (ret != EFI_INVALID_PARAMETER) { | ||||
| 		printf("%lx", ret); | ||||
| 		efi_st_error("UninstallMultipleProtocolInterfaces did not catch error\n"); | ||||
| 		return EFI_ST_FAILURE; | ||||
| 	} | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Test LocateHandleBuffer with ByProtocol | ||||
| 	 * | ||||
| 	 * These are the handles with a guid1 protocol interface installed: | ||||
| 	 * | ||||
| 	 *	handle1, handle2 | ||||
| 	 */ | ||||
| 	count = buffer_size; | ||||
| 	ret = boottime->locate_handle_buffer(BY_PROTOCOL, &guid1, NULL, | ||||
|  | @ -213,7 +225,7 @@ static int execute(void) | |||
| 		return EFI_ST_FAILURE; | ||||
| 	} | ||||
| 	if (count != 2) { | ||||
| 		efi_st_error("LocateHandleBuffer failed to locate new handles\n"); | ||||
| 		efi_st_error("UninstallMultipleProtocolInterfaces deleted handle\n"); | ||||
| 		return EFI_ST_FAILURE; | ||||
| 	} | ||||
| 	ret = find_in_buffer(handle1, count, buffer); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue