The boot options created by eficonfig should use shortened device-paths to
avoid problems if drives are enumerated in a different sequence.

Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@canonical.com>
---
v2:
        Correctly handle the case that dp_volume does not refer to a block
        device.
---
 cmd/eficonfig.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/cmd/eficonfig.c b/cmd/eficonfig.c
index e6e8a0a488..34a59cb15d 100644
--- a/cmd/eficonfig.c
+++ b/cmd/eficonfig.c
@@ -528,7 +528,10 @@ struct efi_device_path 
*eficonfig_create_device_path(struct efi_device_path *dp_
        p += fp_size;
        *((struct efi_device_path *)p) = END;
 
-       dp = efi_dp_append(dp_volume, (struct efi_device_path *)buf);
+       dp = efi_dp_shorten(dp_volume);
+       if (!dp)
+               dp = dp_volume;
+       dp = efi_dp_append(dp, &fp->dp);
        free(buf);
 
        return dp;
-- 
2.40.1

Reply via email to