Fix memory leak in tee_svc_cryp_obj_copy()

The following Trusted App would lead to a memory leak in the TEE core:

  TEE_ObjectHandle o1, o2;
  TEE_AllocateTransientObject(TEE_TYPE_RSA_KEYPAIR, 256, &o1);
  TEE_GenerateKey(o1, 256, NULL, 0);
  TEE_AllocateTransientObject(TEE_TYPE_RSA_KEYPAIR, 256, &o2);
  TEE_CopyObjectAttributes(o2, o1);
  TEE_FreeTransientObject(o1);
  TEE_FreeTransientObject(o2);

The leak was introduced by commit ffe040395b13 ("Add crypto provider internal
API").

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)
Fix buf_overlaps_area security bug

buf_overlaps_area() only returned false in previous implementation that
might lead to a potential security vulnerability and instability in
general since secure and non-secure memory could eventually overlap.

Signed-off-by: Joakim Bech <joakim.bech@linaro.org>
Tested-by: Joakim Bech <joakim.bech@linaro.org> (QEMU)
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
plat-stm: fix parallel build error

Generation of out/arm32-plat-stm/core/tz.lds may occur when the directory
out/arm32-plat-stm/core does not exist yet. The command should therefore
create it.
Note: plat-vexpress is correct.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
OP-TEE design document

- Adds documentation covering platform initalization, SMC handling, TEE
  SMC Interface, thread handling and MMU.
- Adds empty sections showing what we intend to add to the
  documentation.
- Adds yEd (http://www.yworks.com/) files and the images generated by
  the tool.

Signed-off-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Use bn_free to free big numbers

At some places of the code, some big numbers, allocated through
bn_alloc_max(), were freed using free().
They are now free using bn_free()

Signed-off-by: Pascal Brand <pascal.brand@st.com>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)
Clean cache_l1 and cache_l2 maintenance

L1 cache maintenance is using Virtual Memory, whereas cache L2 maintenance
uses Physical Memory

Signed-off-by: Pascal Brand <pascal.brand@st.com>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)