From mboxrd@z Thu Jan 1 00:00:00 1970 From: AKASHI Takahiro Date: Wed, 6 Mar 2019 09:27:11 +0900 Subject: [U-Boot] [RFC 1/8] efi_loader: boottime: don't add device path protocol to image handle In-Reply-To: References: <20190305055337.3793-1-takahiro.akashi@linaro.org> <20190305055337.3793-2-takahiro.akashi@linaro.org> Message-ID: <20190306002705.GD20286@linaro.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Tue, Mar 05, 2019 at 08:48:37PM +0100, Heinrich Schuchardt wrote: > On 3/5/19 6:53 AM, AKASHI Takahiro wrote: > > It is just wrong to add devcie path protocol to image handle. > > > > Signed-off-by: AKASHI Takahiro > > --- > > lib/efi_loader/efi_boottime.c | 11 +---------- > > 1 file changed, 1 insertion(+), 10 deletions(-) > > > > diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c > > index bd8b8a17ae71..7bd9c0a952d4 100644 > > --- a/lib/efi_loader/efi_boottime.c > > +++ b/lib/efi_loader/efi_boottime.c > > @@ -1540,17 +1540,8 @@ efi_status_t efi_setup_loaded_image(struct efi_device_path *device_path, > > info->file_path = file_path; > > info->system_table = &systab; > > > > - if (device_path) { > > + if (device_path) > > info->device_handle = efi_dp_find_obj(device_path, NULL); > > - /* > > - * When asking for the device path interface, return > > - * bootefi_device_path > > - */ > > - ret = efi_add_protocol(&obj->header, > > - &efi_guid_device_path, device_path); > > Installing the device path is not the problem. It is the GUID that is > wrong. Use EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID here. Okay, but I believe that we need duplicate device_path here before installing it as EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID. See this line: > > info->device_handle = efi_dp_find_obj(device_path, NULL); Normally, device_path is expected to be already associated with another handle. We should not allow two handles to share one protocol(data). That is also why I initially believed that add_protocol() should be removed. Thanks, -Takahiro Akashi > UEFI Spec 2.7: > > "The Loaded Image Device Path Protocol must be installed onto the image > handle of a PE/COFF image loaded through the EFI Boot Service LoadImage()." > > Best regards > > Heinrich > > > - if (ret != EFI_SUCCESS) > > - goto failure; > > - } > > > > /* > > * When asking for the loaded_image interface, just > > >