mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
drivers: optee: rpmb: fix returning CID to TEE
The mmc CID value is one of the input parameters used to provision the RPMB key. The trusted execution environment expects this value to be specified in big endian format. Before this fix, on little endian systems, the value returned by the linux kernel mmc driver differed from the one returned by u-boot. This meant that if linux provisioned the RPMB key, u-boot would not have access to the partition (and the other way around). Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
This commit is contained in:
parent
787f10a9d2
commit
2464b229b5
1 changed files with 4 additions and 1 deletions
|
@ -98,6 +98,7 @@ static struct mmc *get_mmc(struct optee_private *priv, int dev_id)
|
|||
static u32 rpmb_get_dev_info(u16 dev_id, struct rpmb_dev_info *info)
|
||||
{
|
||||
struct mmc *mmc = find_mmc_device(dev_id);
|
||||
int i;
|
||||
|
||||
if (!mmc)
|
||||
return TEE_ERROR_ITEM_NOT_FOUND;
|
||||
|
@ -105,7 +106,9 @@ static u32 rpmb_get_dev_info(u16 dev_id, struct rpmb_dev_info *info)
|
|||
if (!mmc->ext_csd)
|
||||
return TEE_ERROR_GENERIC;
|
||||
|
||||
memcpy(info->cid, mmc->cid, sizeof(info->cid));
|
||||
for (i = 0; i < ARRAY_SIZE(mmc->cid); i++)
|
||||
((u32 *) info->cid)[i] = cpu_to_be32(mmc->cid[i]);
|
||||
|
||||
info->rel_wr_sec_c = mmc->ext_csd[222];
|
||||
info->rpmb_size_mult = mmc->ext_csd[168];
|
||||
info->ret_code = RPMB_CMD_GET_DEV_INFO_RET_OK;
|
||||
|
|
Loading…
Reference in a new issue