Partial device paths not properly handled by Bds
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Linaro UEFI |
Fix Released
|
Critical
|
Leif Lindholm |
Bug Description
Boot entries created by efibootmgr may contain a partial device path
to the EFI application to boot. These entries begin with a partition
device path whereas entries created via ARM Boot Manager contain a
full path to the EFI application. The ARM BDS code will fill in the
missing parts of this partial device path as it does for removeable
device paths. This allows the application to be loaded and started.
However, the current code passes the original partial device path to
gBS->LoadImage() and thus LoadImage is unable to find a DeviceHandle
for the path. This means the application being booted cannot find the
boot device from the Loaded Image Protocol structure. In the case of
grub, this prevents the grub config file from being found. This patch
fixes this by making sure the full path is propagated back to the
caller of gBS->LoadImage() so that a proper DeviceHandle is passed
to the application being booted.
Changed in linaro-uefi: | |
status: | Fix Committed → Fix Released |
Note to self: check with ARM, but include this patch in 2014.05 if no upstream fix available in time.