From e1475a38ef89ef7bb36aeb1238bf5f7d139b78e2 Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Wed, 17 Jul 2019 00:39:14 -0500 Subject: [PATCH] Fix non aligned crashes with tlsf When the starting address of the plugin buffer is not aligned to 8 bytes crashes occur in tlsf (on ARM atleast) Change-Id: I655500c25e1c8f84b4a2418e9ec5c5948e4bea82 --- apps/plugin.c | 3 ++- lib/tlsf/src/tlsf.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/plugin.c b/apps/plugin.c index 41434f27c4..3c957b40c8 100644 --- a/apps/plugin.c +++ b/apps/plugin.c @@ -921,7 +921,8 @@ int plugin_load(const char* plugin, const void* parameter) return -1; } #if (CONFIG_PLATFORM & PLATFORM_NATIVE) - plugin_size = hdr->end_addr - pluginbuf; + /* tlsf crashes observed on arm with 0x4 aligned addresses */ + plugin_size = ALIGN_UP(hdr->end_addr - pluginbuf, 0x8); #else plugin_size = 0; #endif diff --git a/lib/tlsf/src/tlsf.c b/lib/tlsf/src/tlsf.c index b842be470b..cea53c3eb8 100644 --- a/lib/tlsf/src/tlsf.c +++ b/lib/tlsf/src/tlsf.c @@ -508,7 +508,8 @@ size_t add_new_area(void *area, size_t area_size, void *mem_pool) /* FW 28-10-17: disabled memset due to crashes on ARM. Functions * fine without it. */ - /* memset(area, 0, area_size); */ + /* BILGUS 17-7-19 re-enabled after setting pluginbuf aligned to 8 bytes */ + memset(area, 0, area_size); ptr = tlsf->area_head; ptr_prev = 0;