I pushed a patch to address this at https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/15438

 

Chris

 

From: Chris.Brand--- via TF-M <tf-m@lists.trustedfirmware.org>
Sent: June 8, 2022 2:17 PM
To: tf-m@lists.trustedfirmware.org
Subject: [TF-M] Mis-use of tfm_spm_partition_set_state()

 

Caution: This e-mail originated outside Infineon Technologies. Do not click on links or open attachments unless you validate it is safe.

 

Looking at the declaration and body of this function, the first parameter is clearly a partition index (index into g_spm_partition_db.partitions[]), and all the call sites in secure_fw/spm/cmsis_func/spm_func.c use it that way. The three call sites in secure_fw/spm/cmsis_func/main.c, though, all pass a PID instead. This happens to work because g_spm_partition_db.partitions[0].static_data->partition_id == 0 and g_spm_partition_db.partitions[1].static_data->partition_id == 1. I don’t see anything that guarantees that that will always be true, though.

 

There is a static function get_partition_id() in secure_fw/spm/cmsis_func/spm_func.c that maps from PID to partition index – should that be exported and called to address this?

 

Thanks,

 

Chris Brand

 

.