1 // SPDX-License-Identifier: GPL-2.0
3 #include <linux/efi_embedded_fw.h>
4 #include <linux/property.h>
5 #include <linux/security.h>
6 #include <linux/vmalloc.h>
11 int firmware_fallback_platform(struct fw_priv
*fw_priv
)
17 if (!(fw_priv
->opt_flags
& FW_OPT_FALLBACK_PLATFORM
))
20 rc
= security_kernel_load_data(LOADING_FIRMWARE
, true);
24 rc
= efi_get_embedded_fw(fw_priv
->fw_name
, &data
, &size
);
26 return rc
; /* rc == -ENOENT when the fw was not found */
28 if (fw_priv
->data
&& size
> fw_priv
->allocated_size
)
31 rc
= security_kernel_post_load_data((u8
*)data
, size
, LOADING_FIRMWARE
,
37 fw_priv
->data
= vmalloc(size
);
41 memcpy(fw_priv
->data
, data
, size
);
43 fw_state_done(fw_priv
);