Skip to content

Commit 59dfd7e

Browse files
committed
efi: payload: image: fit: support bootm_ovverrides.
Add support for bootm overrides in case of non signed images. Signed-off-by: Chali Anis <chalianis1@gmail.com>
1 parent 7b927a5 commit 59dfd7e

1 file changed

Lines changed: 45 additions & 24 deletions

File tree

efi/payload/image.c

Lines changed: 45 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,30 @@ static int do_bootm_efi(struct image_data *data)
308308
return 0;
309309
}
310310

311+
static bool ramdisk_is_fit(struct image_data *data) {
312+
313+
if (bootm_signed_images_are_forced())
314+
return true;
315+
316+
if (data->initrd_file)
317+
return false;
318+
319+
return data->os_fit ? (bool)fit_has_image(data->os_fit,
320+
data->fit_config, "ramdisk") : false;
321+
}
322+
323+
static bool fdt_is_fit(struct image_data *data) {
324+
325+
if (bootm_signed_images_are_forced())
326+
return true;
327+
328+
if (data->oftree_file)
329+
return false;
330+
331+
return data->os_fit ? (bool)fit_has_image(data->os_fit,
332+
data->fit_config, "fdt") : false;
333+
}
334+
311335
static int efi_load_os(struct image_data *data, efi_handle_t *h,
312336
struct efi_loaded_image **loaded_image)
313337
{
@@ -361,23 +385,21 @@ static int efi_load_ramdisk(struct image_data *data)
361385
struct efi_linux_initrd *efi_initrd;
362386
const void *initrd;
363387
unsigned long initrd_size;
364-
bool from_fit = false;
388+
bool from_fit;
365389
int ret;
366390

367-
if (data->os_fit) {
368-
from_fit = fit_has_image(data->os_fit, data->fit_config,
369-
"ramdisk");
370-
if (from_fit) {
371-
ret = fit_open_image(data->os_fit, data->fit_config,
372-
"ramdisk", &initrd, &initrd_size);
373-
if (ret) {
374-
pr_err("Cannot open ramdisk image in FIT image: %pe\n",
375-
ERR_PTR(ret));
376-
return ret;
377-
}
391+
from_fit = ramdisk_is_fit(data);
392+
393+
if (from_fit) {
394+
ret = fit_open_image(data->os_fit, data->fit_config,
395+
"ramdisk", &initrd, &initrd_size);
396+
if (ret) {
397+
pr_err("Cannot open ramdisk image in FIT image: %pe\n",
398+
ERR_PTR(ret));
399+
return ret;
378400
}
379401
}
380-
402+
381403
if (!from_fit) {
382404
if (!data->initrd_file)
383405
return 0;
@@ -412,23 +434,22 @@ static int efi_load_ramdisk(struct image_data *data)
412434
return ret;
413435
}
414436

415-
static int efi_load_dtb(struct image_data *data, void **fdt)
437+
static int efi_load_fdt(struct image_data *data, void **fdt)
416438
{
417439
efi_status_t efiret = EFI_SUCCESS;
418440
void *mem = NULL;
419441
const void *of_tree;
420442
unsigned long of_size;
421-
bool from_fit = false;
443+
bool from_fit;
422444
int ret;
423445

424-
if (data->os_fit) {
425-
from_fit = fit_has_image(data->os_fit, data->fit_config, "fdt");
426-
if (from_fit) {
427-
ret = fit_open_image(data->os_fit, data->fit_config,
428-
"fdt", &of_tree, &of_size);
429-
if (ret)
430-
return ret;
431-
}
446+
from_fit = fdt_is_fit(data);
447+
448+
if (from_fit) {
449+
ret = fit_open_image(data->os_fit, data->fit_config,
450+
"fdt", &of_tree, &of_size);
451+
if (ret)
452+
return ret;
432453
}
433454

434455
if (!from_fit) {
@@ -494,7 +515,7 @@ static int do_bootm_efi_stub(struct image_data *data)
494515
if (ret)
495516
return ret;
496517

497-
ret = efi_load_dtb(data, &fdt);
518+
ret = efi_load_fdt(data, &fdt);
498519
if (ret)
499520
return ret;
500521

0 commit comments

Comments
 (0)