ARM: stm32: Fix ECDSA authentication with Dcache enabled
In case Dcache is enabled while the ECDSA authentication function is called via BootROM ROM API, the MMU tables are set up and the BootROM region is not marked as executable, so an attempt to run code from it results in a hang. Mark the BootROM region as executable as suggested by Patrick to prevent the hang. Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com> Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com> Signed-off-by: Marek Vasut <marex@denx.de>
This commit is contained in:
parent
d3a87e32dd
commit
bbafbc044d
@ -81,6 +81,10 @@ static int romapi_ecdsa_verify(struct udevice *dev,
|
|||||||
memcpy(raw_key + 32, pubkey->y, 32);
|
memcpy(raw_key + 32, pubkey->y, 32);
|
||||||
|
|
||||||
stm32mp_rom_get_ecdsa_functions(&rom);
|
stm32mp_rom_get_ecdsa_functions(&rom);
|
||||||
|
|
||||||
|
/* Mark BootROM region as executable. */
|
||||||
|
mmu_set_region_dcache_behaviour(0, SZ_2M, DCACHE_DEFAULT_OPTION);
|
||||||
|
|
||||||
rom_ret = rom.ecdsa_verify_signature(hash, raw_key, signature, algo);
|
rom_ret = rom.ecdsa_verify_signature(hash, raw_key, signature, algo);
|
||||||
|
|
||||||
return rom_ret == ROM_API_SUCCESS ? 0 : -EPERM;
|
return rom_ret == ROM_API_SUCCESS ? 0 : -EPERM;
|
||||||
|
Loading…
Reference in New Issue
Block a user