| 46e25a17 | 14-Jul-2023 |
loubaihui <loubaihui1@huawei.com> |
crypto: rename struct x25519_keypair
Since X25519 and X448 have the same key pair structure, so we rename struct x25519_keypair as struct montgomery_keypair.
Signed-off-by: loubaihui <loubaihui1@hu
crypto: rename struct x25519_keypair
Since X25519 and X448 have the same key pair structure, so we rename struct x25519_keypair as struct montgomery_keypair.
Signed-off-by: loubaihui <loubaihui1@huawei.com> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 4e154320 | 29-May-2023 |
Seonghyun Park <seonghp@amazon.com> |
core: Apply finer-grained PAN
Prior to this commit, the PAN was disabled for most of the time, within the thread scall handler. After resolving all outstanding missing unprivileged access functions,
core: Apply finer-grained PAN
Prior to this commit, the PAN was disabled for most of the time, within the thread scall handler. After resolving all outstanding missing unprivileged access functions, we can now enable finer- grained PAN, where the unprivileged access is only allowed inside handful of special user-access functions.
There are some exceptions where we toggle PAN to allow the OP-TEE core to access user memory, instead of using user-access functions or bounce buffers. Those are crypto services and ldelf syscall handlers. Those are chosen to avoid potential large bounce buffer allocations.
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 ...
|
| a844a0b8 | 21-Jun-2023 |
Seonghyun Park <seonghp@amazon.com> |
core: use user-access functions for crypto service
Use user-access functions for crypto service functions, excluding encryption, decryption and hasn operations, which might require large bounce buff
core: use user-access functions for crypto service
Use user-access functions for crypto service functions, excluding encryption, decryption and hasn operations, which might require large bounce buffer allocations. Besides these operations, user- access functions are applied for those functions that takes attributes, IVs, big numbers, and auxiliary data from the user- space.
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 ...
|
| 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 ...
|
| 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 ...
|
| a0be044c | 19-Apr-2023 |
lei zhou <lei.zhou@linaro.org> |
core: crypto: change TEE_AEDecryptFinal() tag param's attribute
Due to tag parameter was passed in from REE side share memory same as cipher-text source and nonce buffer/parameters. Then memory acce
core: crypto: change TEE_AEDecryptFinal() tag param's attribute
Due to tag parameter was passed in from REE side share memory same as cipher-text source and nonce buffer/parameters. Then memory access sanity-check marks CCM TAG buffer as ACCESS_DENIED, which triggers user TA panic.
Change tag parameter's attribute from [in] to [inbuf]. This fix is expected to be addressed in next GP TEE Internal Core API specification.
Link: https://github.com/OP-TEE/optee_os/issues/5946 Signed-off-by: lei zhou <lei.zhou@linaro.org> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| f5c3d85a | 01-Dec-2020 |
Julien Masson <jmasson@baylibre.com> |
core: crypto: add support MD5 hashes in RSA sign/verify/cipher
Introduce support of using MD5 hashes in RSA sign/verify/cipher operations, which is required by AOSP Keymaster.
This is verified in
core: crypto: add support MD5 hashes in RSA sign/verify/cipher
Introduce support of using MD5 hashes in RSA sign/verify/cipher operations, which is required by AOSP Keymaster.
This is verified in VerificationOperationsTest.RsaSuccess VTS Test [1], which checks usage of such digests: NONE, MD5, SHA1, SHA_2_224, SHA_2_256, SHA_2_384, SHA_2_512.
This patch has been inspired by commit[2]:
Link: [1] https://android.googlesource.com/platform/hardware/interfaces/+/master/keymaster/3.0/vts/functional/keymaster_hidl_hal_test.cpp Link: [2] https://github.com/OP-TEE/optee_os/commit/199d0b7310d1705661a106358f1f0b46e4c5c587 ("core: crypto: add support MD5 hashes in RSA sign/verify") Signed-off-by: Julien Masson <jmasson@baylibre.com> Signed-off-by: Safae Ouajih <souajih@baylibre.com> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Etienne Carriere <etienne.carriere@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 3d70a974 | 19-Jun-2018 |
Igor Opaniuk <igor.opaniuk@linaro.org> |
core: crypto: change supported HMAC key size ranges
Change supported HMAC key size range from 64 to 1024 when CFG_HMAC_64_1024_RANGE config is enabled, This is required to successfully pass AOSP Key
core: crypto: change supported HMAC key size ranges
Change supported HMAC key size range from 64 to 1024 when CFG_HMAC_64_1024_RANGE config is enabled, This is required to successfully pass AOSP Keymaster VTS tests.
From TEE Internal Core API specificaion: "Table 5-9, support for other sizes or algorithms is implementation-defined."
Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org> Signed-off-by: Safae Ouajih <souajih@baylibre.com> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| c4cab13e | 20-Feb-2023 |
Clement Faure <clement.faure@nxp.com> |
core: crypto: fix memory leak in Ed25519 support
The software implementation of ED25519 algorithm has a memory leak in the key and key pair allocation. Upon every public key allocation, a key pair i
core: crypto: fix memory leak in Ed25519 support
The software implementation of ED25519 algorithm has a memory leak in the key and key pair allocation. Upon every public key allocation, a key pair is allocated (public and private components). When freeing the public key, only the public component is freed. To reproduce the issue:
$ while xtest 4016; do :; done
Until the following error:
* regression_4016 Test TEE Internal API ED25519 sign/verify E/LD: copy_section_headers:1124 sys_copy_from_ta_bin E/TC:? 0 ldelf_init_with_ldelf:131 ldelf failed with res: 0xffff000c /usr/src/debug/optee-test/master.imx-r0/host/xtest/regression_4000.c:6062: xtest_teec_open_session(&session, &crypt_user_ta_uuid, ((void *)0), &ret_orig) has an unexpected value: 0xffff000c = TEEC_ERROR_OUT_OF_MEMORY, expected 0x0 = TEEC_SUCCESS regression_4016 FAILED
To fix the memory leak, a separate public key allocation function must be defined along a ED25519 public key structure.
Fixes: 0aaad418ac8b ("core: crypto: add Ed25519 support") Signed-off-by: Clement Faure <clement.faure@nxp.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 138c5102 | 14-Dec-2022 |
Jens Wiklander <jens.wiklander@linaro.org> |
GP131: Add TA property gpd.ta.doesNotCloseHandleOnCorruptObject
Adds the TA property gpd.ta.doesNotCloseHandleOnCorruptObject.
All syscalls operating on an object handle and can return TEE_ERROR_CO
GP131: Add TA property gpd.ta.doesNotCloseHandleOnCorruptObject
Adds the TA property gpd.ta.doesNotCloseHandleOnCorruptObject.
All syscalls operating on an object handle and can return TEE_ERROR_CORRUPT_OBJECT must also do special treatment when TEE_ERROR_CORRUPT_OBJECT is returned. Prior to gpd.ta.doesNotCloseHandleOnCorruptObject this meant removing the object and closing the object handle. With the gpd.ta.doesNotCloseHandleOnCorruptObject property the object handle shouldn't be close if this the current TA has the property set to true.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| e81ed9d4 | 07-Dec-2022 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: syscall_hash_final() support XOF
Adds support in syscall_hash_final() for Extendable Output Functions, that is, TEE_ALG_SHAKE128 and TEE_ALG_SHAKE256 for now.
Acked-by: Etienne Carriere <etie
core: syscall_hash_final() support XOF
Adds support in syscall_hash_final() for Extendable Output Functions, that is, TEE_ALG_SHAKE128 and TEE_ALG_SHAKE256 for now.
Acked-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 260b4028 | 02-Dec-2022 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: crypto: add API for SHA-3
Adds an API for the SHA-3 [1] algorithms SHA3-224, SHA3_256, SHA3_384, SHA3_512, SHAKE128, and SHAKE256. SHAKE128 and SHAKE256 are Extendable-Output Functions (XOF),
core: crypto: add API for SHA-3
Adds an API for the SHA-3 [1] algorithms SHA3-224, SHA3_256, SHA3_384, SHA3_512, SHAKE128, and SHAKE256. SHAKE128 and SHAKE256 are Extendable-Output Functions (XOF), but handled as hashes in the API.
Adds API for SHA-3 based HMAC functions.
For XOF algorithms crypto_hash_final() can be called multiple times and generate an arbitrary amount of data. Note that this data will have a common prefix if done over the same input (see A.2 in [1]).
[1] https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf
Acked-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| c6b8eb2d | 05-Dec-2022 |
Jens Wiklander <jens.wiklander@linaro.org> |
GP131: Update gpd.tee.trustedStorage.antiRollback.protectionLevel
Updates used values for gpd.tee.trustedStorage.antiRollback.protectionLevel according to TEE Internal Core API version 1.3.1.
Note
GP131: Update gpd.tee.trustedStorage.antiRollback.protectionLevel
Updates used values for gpd.tee.trustedStorage.antiRollback.protectionLevel according to TEE Internal Core API version 1.3.1.
Note that protection level 0 is not valid any longer, so report level 100 when RPMB isn't in use. Only root can tamper with the REE FS storage due to the REE file system permissions.
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 5c4bbf0f | 05-Dec-2022 |
Jens Wiklander <jens.wiklander@linaro.org> |
GP131: add TA property gpd.client.endian
Adds the new property "gpd.client.endian" to report the endianness used by a client.
At the moment there is no way for a client to report its endianness to
GP131: add TA property gpd.client.endian
Adds the new property "gpd.client.endian" to report the endianness used by a client.
At the moment there is no way for a client to report its endianness to OP-TEE so assume that all are little-endian.
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 999b69d0 | 02-Dec-2022 |
Jens Wiklander <jens.wiklander@linaro.org> |
GP131: Update TEE_AsymmetricEncrypt() and TEE_AsymmetricDecrypt()
Updates TEE_AsymmetricEncrypt() and TEE_AsymmetricDecrypt() according to TEE Internal Core API version 1.3.1. The srcLen and dstLen
GP131: Update TEE_AsymmetricEncrypt() and TEE_AsymmetricDecrypt()
Updates TEE_AsymmetricEncrypt() and TEE_AsymmetricDecrypt() according to TEE Internal Core API version 1.3.1. The srcLen and dstLen parameters are changed to use size_t instead of uint32_t
Adds the optional attribute TEE_ATTR_RSA_OAEP_MGF_HASH which if provided specifies the MGF1 hash function to use. Prior to GP v1.3.1 it was implementation defined. OP-TEE only supports using the same MGF1 hash function as the internal hash function of the algorithim, that is, for the algorithm TEE_ALG_RSAES_PKCS1_OAEP_MGF1_x that hash function TEE_ALG_x is used.
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| f22e1655 | 01-Dec-2022 |
Jens Wiklander <jens.wiklander@linaro.org> |
GP131: Update TEE_CreatePersistentObject()
Update TEE_CreatePersistentObject() according to TEE Internal Core API version 1.3.1. The objectIDLen parameter is changed to use size_t instead of uint32_
GP131: Update TEE_CreatePersistentObject()
Update TEE_CreatePersistentObject() according to TEE Internal Core API version 1.3.1. The objectIDLen parameter is changed to use size_t instead of uint32_t.
The object parameter is now an optional pointer to a handle. When NULL the standard says: If attributes is a handle on an initialized transient object, the initialized transient object SHALL be transformed to a persistent object. So syscall_storage_obj_create() is also updated accordingly.
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| b93c7dff | 05-Dec-2022 |
Jens Wiklander <jens.wiklander@linaro.org> |
GP131: Update HKDF defines
OP-TEE provides an HKDF implementation as an extension to the TEE Internal Core API which predates version 1.3 of the specification where HKDF was officially introduced.
GP131: Update HKDF defines
OP-TEE provides an HKDF implementation as an extension to the TEE Internal Core API which predates version 1.3 of the specification where HKDF was officially introduced.
Update with the official defines and resolve name clashes. With this OP-TEE supports both the old extension and the new official API.
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| fe2fd3ff | 24-Nov-2022 |
Jens Wiklander <jens.wiklander@linaro.org> |
GP131: Add TEE_ALG_ECDH_DERIVE_SHARED_SECRET and TEE_ALG_ECDSA_SHA*
Adds the defines - TEE_ALG_ECDH_DERIVE_SHARED_SECRET - TEE_ALG_ECDSA_SHA1 - TEE_ALG_ECDSA_SHA224 - TEE_ALG_ECDSA_SHA256 - TEE_ALG_
GP131: Add TEE_ALG_ECDH_DERIVE_SHARED_SECRET and TEE_ALG_ECDSA_SHA*
Adds the defines - TEE_ALG_ECDH_DERIVE_SHARED_SECRET - TEE_ALG_ECDSA_SHA1 - TEE_ALG_ECDSA_SHA224 - TEE_ALG_ECDSA_SHA256 - TEE_ALG_ECDSA_SHA386 - TEE_ALG_ECDSA_SHA512 from TEE Internal Core API version 1.3.1 to replace the previous now deprecated defines: - TEE_ALG_ECDSA_P192 - TEE_ALG_ECDSA_P224 - TEE_ALG_ECDSA_P256 - TEE_ALG_ECDSA_P384 - TEE_ALG_ECDSA_P521 - TEE_ALG_ECDH_P192 - TEE_ALG_ECDH_P224 - TEE_ALG_ECDH_P256 - TEE_ALG_ECDH_P384 - TEE_ALG_ECDH_P521
The new defines have new values and the values from the old defines are not reused.
The syscall ABI maintains compatibility by handling both the old and new values in parallel from now on.
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 3e8a6147 | 15-Dec-2022 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: crypto: fix TEE_ATTR_EDDSA_PREHASH interpretation
Commit 0aaad418ac8b ("core: crypto: add Ed25519 support") introduced support for the ED25519 algorithm. This included parsing a TEE_ATTR_EDDSA
core: crypto: fix TEE_ATTR_EDDSA_PREHASH interpretation
Commit 0aaad418ac8b ("core: crypto: add Ed25519 support") introduced support for the ED25519 algorithm. This included parsing a TEE_ATTR_EDDSA_PREHASH parameter that unfortunately was not fully compliant with the standard. So fix this with a more strict interpretation of TEE_ATTR_EDDSA_PREHASH as described in the specification.
Fixes: 0aaad418ac8b ("core: crypto: add Ed25519 support") Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Valerii Chubar <valerii_chubar@epam.com> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| de1cd722 | 20-Dec-2022 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: syscall_storage_obj_write(): handle corrupt object
All syscalls operating on an object handle and can return TEE_ERROR_CORRUPT_OBJECT must also remove the object if the return code is TEE_ERRO
core: syscall_storage_obj_write(): handle corrupt object
All syscalls operating on an object handle and can return TEE_ERROR_CORRUPT_OBJECT must also remove the object if the return code is TEE_ERROR_CORRUPT_OBJECT. This is missing in syscall_storage_obj_write() so add the missing call to remove the object if it is corrupt.
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| d684a4ef | 08-Dec-2022 |
Sohaib ul Hassan <sohaib.ul.hassan@unikie.com> |
core: crypto: Fix tee_obj_attr_copy_from for X25519
Make sure in tee_obj_attr_copy_from() if the source object type is TEE_TYPE_X25519_KEYPAIR the destination object type should be TEE_TYPE_X25519_P
core: crypto: Fix tee_obj_attr_copy_from for X25519
Make sure in tee_obj_attr_copy_from() if the source object type is TEE_TYPE_X25519_KEYPAIR the destination object type should be TEE_TYPE_X25519_PUBLIC_KEY. The function should extract public key attributes if presented with a key pair object.
According to the TEE Internal Core API Specification v1.2 we should check if the source is of type *_KEYPAIR then the destination is a subset of type *_PUBLIC_KEY when populating the destination object as listed in the Table 5-11.
Fixes: 90040fa4c81c ("core: crypto: add X25519 support") Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Sohaib ul Hassan <sohaib.ul.hassan@unikie.com>
show more ...
|
| 1b865ed6 | 05-Dec-2022 |
Jens Wiklander <jens.wiklander@linaro.org> |
Fix TEE_ATTR_ECC_EPHEMERAL_PUBLIC_VALUE_*
Commit 5b385b3f835d ("core: crypto: add support for SM2 KEP")defined by mistake the wrong values for these two. To fix this we're are renaming these IDs alt
Fix TEE_ATTR_ECC_EPHEMERAL_PUBLIC_VALUE_*
Commit 5b385b3f835d ("core: crypto: add support for SM2 KEP")defined by mistake the wrong values for these two. To fix this we're are renaming these IDs alternative IDs which OP-TEE will recognize in addition to the correct official values when deriving a key using the TEE_ALG_SM2_KEP algorithm.
TEE_ATTR_ECC_EPHEMERAL_PUBLIC_VALUE_X and TEE_ATTR_ECC_EPHEMERAL_PUBLIC_VALUE_Y are only used as input parameters so there is no need to translate back to the old invalid values.
Fixes: 5b385b3f835d ("core: crypto: add support for SM2 KEP") Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 696f56ac | 22-Nov-2022 |
Pingan Xie <xiepingan3@huawei.com> |
core, libutee: introduce TEE_ALG_SM4_XTS
In this patch, The sm4-xts algorithm is supported in the GP process.
Signed-off-by: Pingan Xie <xiepingan3@huawei.com> Reviewed-by: Xiaoxu Zeng <zengxiaoxu@
core, libutee: introduce TEE_ALG_SM4_XTS
In this patch, The sm4-xts algorithm is supported in the GP process.
Signed-off-by: Pingan Xie <xiepingan3@huawei.com> Reviewed-by: Xiaoxu Zeng <zengxiaoxu@huawei.com> Acked-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|