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 }
成功截停: