TEE 开发 禁止大内存TA加载

我们会经常遇到一些 TA , 把自己的TA_STACK_SIZE 和 TA_HEAP_SIZE  设置的太大 ,从而无法成功被load的情况。
因为ta ram 一共就这些内存, 但是 TA的这两个宏配置是 由用户去决定的,为了避免这些TA owner 方便自己害了他人考虑,我们在可以做出如下限制。

  • 在 bl32 里面 load ta的时候做判断
  • 在 lib目录下,load ta的时候做判断
  • 在user_ta_header.c 做判断

其中:
第一个方式需要不断编译bl32 太麻烦费时费力,还会被人说成bug

第二个方式可以不用修改bl32 就可以直接完成,仅仅需要更新lib, 接着重编ta

第三个方式很简单但是容易被用户发现,自己又修改回来

于是第二个实现如下:

 1 static TEE_Result init_instance(void)
 2 {
 3         EMSG("-->TA HEAP Size: 0x%x, TA Stack Size: 0x%x", ta_heap_size, ta_head.stack_size);
 4         if (ta_heap_size >= 4*1024*1024 || ta_head.stack_size > 2*1024*1024) {
 5                 EMSG("[ATOS]: TA stack or heap size is too big! can not load it ");
 6                 return TEE_ERROR_OUT_OF_MEMORY;
 7         }
 8 
 9         trace_set_level(tahead_get_trace_level());
10         __utee_gprof_init();
11         malloc_add_pool(ta_heap, ta_heap_size);
12         _TEE_MathAPI_Init();
13         return TA_CreateEntryPoint();
14 }

成功截停:

 

posted @ 2024-05-14 16:24  颜小雀  阅读(4)  评论(0编辑  收藏  举报