diff options
Diffstat (limited to 'drivers/firmware/efi/libstub/riscv-stub.c')
| -rw-r--r-- | drivers/firmware/efi/libstub/riscv-stub.c | 17 | 
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/firmware/efi/libstub/riscv-stub.c b/drivers/firmware/efi/libstub/riscv-stub.c index 380e4e251399..9c460843442f 100644 --- a/drivers/firmware/efi/libstub/riscv-stub.c +++ b/drivers/firmware/efi/libstub/riscv-stub.c @@ -25,7 +25,7 @@ typedef void __noreturn (*jump_kernel_func)(unsigned int, unsigned long);  static u32 hartid; -static u32 get_boot_hartid_from_fdt(void) +static int get_boot_hartid_from_fdt(void)  {  	const void *fdt;  	int chosen_node, len; @@ -33,23 +33,26 @@ static u32 get_boot_hartid_from_fdt(void)  	fdt = get_efi_config_table(DEVICE_TREE_GUID);  	if (!fdt) -		return U32_MAX; +		return -EINVAL;  	chosen_node = fdt_path_offset(fdt, "/chosen");  	if (chosen_node < 0) -		return U32_MAX; +		return -EINVAL;  	prop = fdt_getprop((void *)fdt, chosen_node, "boot-hartid", &len);  	if (!prop || len != sizeof(u32)) -		return U32_MAX; +		return -EINVAL; -	return fdt32_to_cpu(*prop); +	hartid = fdt32_to_cpu(*prop); +	return 0;  }  efi_status_t check_platform_features(void)  { -	hartid = get_boot_hartid_from_fdt(); -	if (hartid == U32_MAX) { +	int ret; + +	ret = get_boot_hartid_from_fdt(); +	if (ret) {  		efi_err("/chosen/boot-hartid missing or invalid!\n");  		return EFI_UNSUPPORTED;  	}  |