| 953707a4 | 21-Jun-2023 |
Seonghyun Park <seonghp@amazon.com> |
core: use user-access functions in system PTA
When user TAs call into the system PTA, allocate bounce buffers and copy data from the user buffers to the bounce buffers, which can be accessed by the
core: use user-access functions in system PTA
When user TAs call into the system PTA, allocate bounce buffers and copy data from the user buffers to the bounce buffers, which can be accessed by the core kernel functions.
Signed-off-by: Seonghyun Park <seonghp@amazon.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 124bf090 | 21-Jun-2023 |
Seonghyun Park <seonghp@amazon.com> |
core: use GET_USER_SCALAR() to save TA panic regs
Use GET_USER_SCALAR() macro to retrieve register values from the user stack upon TA panic.
Signed-off-by: Seonghyun Park <seonghp@amazon.com> Revie
core: use GET_USER_SCALAR() to save TA panic regs
Use GET_USER_SCALAR() macro to retrieve register values from the user stack upon TA panic.
Signed-off-by: Seonghyun Park <seonghp@amazon.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 84f78978 | 21-Jun-2023 |
Seonghyun Park <seonghp@amazon.com> |
core: use user-access functions for storage svc
Use user-access functions within storage service syscalls, mainly to copy object id from user-spaced buffers.
Signed-off-by: Seonghyun Park <seonghp@
core: use user-access functions for storage svc
Use user-access functions within storage service syscalls, mainly to copy object id from user-spaced buffers.
Signed-off-by: Seonghyun Park <seonghp@amazon.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 376448c2 | 21-Jun-2023 |
Seonghyun Park <seonghp@amazon.com> |
core: use user-access functions for passing params
Use user-access functions for parameter-passing between user TA and the core when calling another TA from a TA and when entering a user TA.
Signed
core: use user-access functions for passing params
Use user-access functions for parameter-passing between user TA and the core when calling another TA from a TA and when entering a user TA.
Signed-off-by: Seonghyun Park <seonghp@amazon.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 52e7b1a6 | 14-Jun-2023 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: use user-access functions in ldelf interaction
When interacting with LDELF, replace implicit user space accesses from privileged mode using proper user-access functions.
Co-developed-by: Seon
core: use user-access functions in ldelf interaction
When interacting with LDELF, replace implicit user space accesses from privileged mode using proper user-access functions.
Co-developed-by: Seonghyun Park <seonghp@amazon.com> Signed-off-by: Seonghyun Park <seonghp@amazon.com> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 9c99bb1d | 15-Jun-2023 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: add bb_strndup_user()
Adds bb_strndup_user() to copy a user space string into a bounce buffer large enough to hold the string.
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Review
core: add bb_strndup_user()
Adds bb_strndup_user() to copy a user space string into a bounce buffer large enough to hold the string.
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| e5aa0f8c | 12-May-2023 |
Seonghyun Park <seonghp@amazon.com> |
core: add more user access functions
Add more user access functions: clear_user(), strnlen_user() and bb_memdup_user(), which can be used to manipulate, check or duplicate given user space buffers.
core: add more user access functions
Add more user access functions: clear_user(), strnlen_user() and bb_memdup_user(), which can be used to manipulate, check or duplicate given user space buffers.
Signed-off-by: Seonghyun Park <seonghp@amazon.com> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| c5a0db99 | 14-Jun-2023 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: add bounce buffer to user mode context
Adds a bounce buffer for user space buffer to be used during syscall processing to avoid unchecked privileged access into user space memory.
bb_alloc(),
core: add bounce buffer to user mode context
Adds a bounce buffer for user space buffer to be used during syscall processing to avoid unchecked privileged access into user space memory.
bb_alloc(), bb_free(), and bb_reset() are added to manage memory allocation from the bounce buffer.
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 6fa59c9a | 12-May-2023 |
Seonghyun Park <seonghp@amazon.com> |
arm64: Introduce permissive PAN implementation
Privileged Access Never (PAN) is a part of ARMv8.1 extension that restricts accesses to unprivileged memory from privileged mode in order to prevent un
arm64: Introduce permissive PAN implementation
Privileged Access Never (PAN) is a part of ARMv8.1 extension that restricts accesses to unprivileged memory from privileged mode in order to prevent unintended accesses to potentially malicious memory.
This introduces configuration of PAN and helper functions enter_user_access() and exit_user_access() that toggles PSTATE.PAN that controls the behavior of PAN.
Current OP-TEE impelmentation is not ready to apply strict PAN policy due to missing user-access function uses, etc.
Hence, this patch takes a very permissive approach (yet better than nothing), where PAN is deactivated in the entire lifetime of thread_svc_handler (i.e., system call).
Signed-off-by: Seonghyun Park <seonghp@amazon.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Acked-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| f1fc3324 | 22-Jun-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
plat-stm32mp1: stub stm32mp13 regulators
Implements stubs for SCMI regulators that are to be exposed by STM32MP13 SCMI server but are not implemented yet in OP-TEE core. The drivers for these regula
plat-stm32mp1: stub stm32mp13 regulators
Implements stubs for SCMI regulators that are to be exposed by STM32MP13 SCMI server but are not implemented yet in OP-TEE core. The drivers for these regulators (IOD SDMMC1/2 and VREFBUF) will be implemented once there is a regulator framework in OP-TEE. In the meantime, stubbing those allows to use the platform.
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| e2ec831c | 03-Jul-2023 |
Jihwan Park <jihwp@amazon.com> |
core: crypto_bignum_free(): add indirection and set pointer to NULL
To prevent human mistake, crypto_bignum_free() sets the location of the bignum pointer to NULL after freeing it.
Signed-off-by: J
core: crypto_bignum_free(): add indirection and set pointer to NULL
To prevent human mistake, crypto_bignum_free() sets the location of the bignum pointer to NULL after freeing it.
Signed-off-by: Jihwan Park <jihwp@amazon.com> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Joakim Bech <joakim.bech@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 98c094e4 | 29-Jun-2023 |
Thomas Bourgoin <thomas.bourgoin@foss.st.com> |
plat-stm32mp1: change log level in SCMI server
The SCMI server prints debug messages when handling some SCMI services. At runtime this leads to a lot of traces and debug log level is too verbose. Th
plat-stm32mp1: change log level in SCMI server
The SCMI server prints debug messages when handling some SCMI services. At runtime this leads to a lot of traces and debug log level is too verbose. Therefore change all debug traces to flow level for that source file.
Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com> Signed-off-by: Thomas Bourgoin <thomas.bourgoin@foss.st.com>
show more ...
|
| 9ab92ded | 28-Jun-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
core: tee_svc_cryp: report RSAES_PKCS1_OAEP_MGF1 bad hash ID
Fixes syscall_asymm_operate() to report inconsistent hash algorithm specified as attribute for TEE_ALG_RSAES_PKCS1_OAEP_MGF1_* operations
core: tee_svc_cryp: report RSAES_PKCS1_OAEP_MGF1 bad hash ID
Fixes syscall_asymm_operate() to report inconsistent hash algorithm specified as attribute for TEE_ALG_RSAES_PKCS1_OAEP_MGF1_* operations as OP-TEE only supports the hash predefined for the request algorithm TEE_ALG_RSAES_PKCS1_OAEP_MGF1_xxx.
Link: https://github.com/OP-TEE/optee_os/issues/6143 Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 92166431 | 27-Jun-2023 |
Jerome Forissier <jerome.forissier@linaro.org> |
qemu_armv8a: fix build with CFG_USER_TA_TARGETS=ta_arm32
The proper way to build in-tree TAs in 64-bit mode by default is to set supported-ta-targets to "ta_arm64 ta_arm32". Indeed, the default targ
qemu_armv8a: fix build with CFG_USER_TA_TARGETS=ta_arm32
The proper way to build in-tree TAs in 64-bit mode by default is to set supported-ta-targets to "ta_arm64 ta_arm32". Indeed, the default target is always defined as the first entry in supported-ta-targets, as documented in mk/config.mk.
Fixes the following build error:
$ make CFG_USER_TA_TARGETS=ta_arm32 PLATFORM=vexpress-qemu_armv8a bash: -W: invalid option ...
default-user-ta-target is not to be used by the platform configuration files. It is meant to be set by the main Makefile. For this reason, replace the conditional assignment (?=) with $(call force, ...) in order to catch inconsistencies in a more friendly way.
Fixes: 07031b23de23 ("qemu_armv8a: set default-user-ta-target ?= ta_arm64") Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Etienne Carriere <etienne.carriere@foss.st.com> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| e4992be7 | 16-Jun-2023 |
Alvin Chang <alvinga@andestech.com> |
core: riscv: Add TLB operation related to virtual address and ASID
Add TLB invalidate function which is corresponding to virtual address and ASID. The commit also adds missing declaration of tlbi_va
core: riscv: Add TLB operation related to virtual address and ASID
Add TLB invalidate function which is corresponding to virtual address and ASID. The commit also adds missing declaration of tlbi_va_allasid().
Signed-off-by: Alvin Chang <alvinga@andestech.com> Acked-by: Etienne Carriere <etienne.carriere@foss.st.com> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 83a3d56a | 26-Jun-2023 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: fix race in mobj_reg_shm_dec_map()
Fixes a race in mobj_reg_shm_dec_map() when r->mm is NULL. This is similar to the race fixed by commit 06ea466f9c19 ("core: fix race in mobj_reg_shm_inc_map(
core: fix race in mobj_reg_shm_dec_map()
Fixes a race in mobj_reg_shm_dec_map() when r->mm is NULL. This is similar to the race fixed by commit 06ea466f9c19 ("core: fix race in mobj_reg_shm_inc_map()"), but with one more possibility.
The problem goes like: A. Thread 1 calls mobj_reg_shm_dec_map() at the same time as thread 2 calls mobj_reg_shm_inc_map(). B. Thread 1 decreases mapcount to zero and tries to take the spinlock, but thread 1 is suspended before it has acquired the spinlock. C. Thread 2 sees that mapcount is zero and takes the spinlock and maps the memory. D. Thread 2 calls mobj_reg_shm_dec_map(), mapcount reaches zero again and the shared memory is unmapped and r->mm is set to NULL. E. Thread 1 is finally resumed and acquires the spinlock, mapcount is still zero but r->mm is also NULL.
To fix the problem at step E above check that r->mm is still non-NULL.
Note that the same fix isn't needed for ffa_dec_map() since unmap_helper() checks that mf->mm is non-NULL first.
Fixes: 06ea466f9c19 ("core: fix race in mobj_reg_shm_inc_map()") Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Olivier Masse <olivier.masse@nxp.com>
show more ...
|
| cabb8df3 | 20-Jun-2023 |
Alvin Chang <alvinga@andestech.com> |
core: riscv: Add cflags for excluding source files from ftrace
Some C source files may lead to incorrect behaviors in ftrace. Exclude them when the system is compiled with ftrace support.
Signed-of
core: riscv: Add cflags for excluding source files from ftrace
Some C source files may lead to incorrect behaviors in ftrace. Exclude them when the system is compiled with ftrace support.
Signed-off-by: Alvin Chang <alvinga@andestech.com> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Sumit Garg <sumit.garg@linaro.org> Reviewed-by: Marouene Boubakri <marouene.boubakri@nxp.com>
show more ...
|
| 994c8602 | 20-Jun-2023 |
Alvin Chang <alvinga@andestech.com> |
core: riscv: Implement timer related functions for ftrace support
Implement barrier_read_counter_timer() to read the timer value after a barrier. Implement read_cntfrq() to get the frequency of mach
core: riscv: Implement timer related functions for ftrace support
Implement barrier_read_counter_timer() to read the timer value after a barrier. Implement read_cntfrq() to get the frequency of machine timer counter. The read_time() is moved from header to C source file to reduce the code size.
Signed-off-by: Alvin Chang <alvinga@andestech.com> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Sumit Garg <sumit.garg@linaro.org> Reviewed-by: Marouene Boubakri <marouene.boubakri@nxp.com>
show more ...
|
| 97a70d28 | 20-Jun-2023 |
Alvin Chang <alvinga@andestech.com> |
libutils: Add riscv.S to make it available for core and TA libs
Some assembly macros are necessary for both OP-TEE core and TA libraries. Therefore, we add riscv specific assembly file into libutils
libutils: Add riscv.S to make it available for core and TA libs
Some assembly macros are necessary for both OP-TEE core and TA libraries. Therefore, we add riscv specific assembly file into libutils and move some assembly related macros from riscv.h to riscv.S.
Signed-off-by: Alvin Chang <alvinga@andestech.com> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Sumit Garg <sumit.garg@linaro.org> Reviewed-by: Marouene Boubakri <marouene.boubakri@nxp.com>
show more ...
|
| 93a9647f | 22-Jun-2023 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: spmc: handle missing FFA_MSG_SEND_VM_DESTROYED
Handles the previously missing FFA_MSG_SEND_VM_DESTROYED message used to signal the destruction of a non-secure guest. This is the counter part o
core: spmc: handle missing FFA_MSG_SEND_VM_DESTROYED
Handles the previously missing FFA_MSG_SEND_VM_DESTROYED message used to signal the destruction of a non-secure guest. This is the counter part of FFA_MSG_SEND_VM_CREATED that is used to signal the creation of a non-secure guest.
Fixes: a65dd3a6b64d ("core: spmc: support virtualization with SPMC at S-EL1") Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Acked-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 31a550cb | 14-Jun-2023 |
Jorge Ramirez-Ortiz <jorge@foundries.io> |
plat-k3: main: Print the provisioned key information
During provisioning these values are fused using the signing certificate.
The maximum value of Key Count is 2 (when BMPK is used).
Signed-off-b
plat-k3: main: Print the provisioned key information
During provisioning these values are fused using the signing certificate.
The maximum value of Key Count is 2 (when BMPK is used).
Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| f185e24b | 14-Jun-2023 |
Jorge Ramirez-Ortiz <jorge@foundries.io> |
plat-k3: drivers: add TISCI call to retrieve the Keycnt and Keyrev
Add TISCI call to retrieve the key count and key revision fused during provisioning.
Signed-off-by: Jorge Ramirez-Ortiz <jorge@fou
plat-k3: drivers: add TISCI call to retrieve the Keycnt and Keyrev
Add TISCI call to retrieve the key count and key revision fused during provisioning.
Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| c6ed64dd | 13-Jun-2023 |
Jorge Ramirez-Ortiz <jorge@foundries.io> |
plat-k3: main: coding standard consistency
The coding standard requires a line between function definitions.
Add such a line to make it visually consistent with the recently added secure_boot_infor
plat-k3: main: coding standard consistency
The coding standard requires a line between function definitions.
Add such a line to make it visually consistent with the recently added secure_boot_information(void).
This commit also removes a duplicated include directive.
Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io> Acked-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 19418a37 | 13-Jun-2023 |
Jorge Ramirez-Ortiz <jorge@foundries.io> |
plat-k3: main: Print the revision of the Secure Board Configuration
If the board is booting with hardware authentication, print the software revision.
The Software Revision is the value written to
plat-k3: main: Print the revision of the Secure Board Configuration
If the board is booting with hardware authentication, print the software revision.
The Software Revision is the value written to the OTP eFuse during board provisioning and it is only available in HS boards.
Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 30a9709e | 13-Jun-2023 |
Jorge Ramirez-Ortiz <jorge@foundries.io> |
plat-k3: drivers: add TISCI call to retrieve the SWREV
This call is only available to OTP_REV_ID_SEC_BRDCFG
Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io> Acked-by: Jerome Forissier <jerom
plat-k3: drivers: add TISCI call to retrieve the SWREV
This call is only available to OTP_REV_ID_SEC_BRDCFG
Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|