efi_loader: correct device path check
Since commit226cddbe32
("efi_loader: check device path in InstallMultipleProtocolInterfaces") iPXE fails to access the network. LocateDevicePath() returns EFI_SUCCESS even if a shorter path is found as a partial match. It returns the remaining path. So to be sure that we found a complete match we need to check that the remaining path refers to an end node. Provide debug output if a device path has already been installed. Fixes:226cddbe32
("efi_loader: check device path in InstallMultipleProtocolInterfaces") Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
bb2b13d528
commit
20562893fa
@ -2360,7 +2360,10 @@ efi_status_t EFIAPI efi_install_multiple_protocol_interfaces
|
||||
|
||||
r = EFI_CALL(efi_locate_device_path(protocol, &dp,
|
||||
&old_handle));
|
||||
if (r == EFI_SUCCESS) {
|
||||
if (r == EFI_SUCCESS &&
|
||||
dp->type == DEVICE_PATH_TYPE_END) {
|
||||
EFI_PRINT("Path %pD already installed\n",
|
||||
protocol_interface);
|
||||
r = EFI_ALREADY_STARTED;
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user