summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Wilgus <me.theuser@yahoo.com>2019-07-17 00:39:14 -0500
committerWilliam Wilgus <me.theuser@yahoo.com>2019-07-27 14:30:45 +0200
commite1475a38ef89ef7bb36aeb1238bf5f7d139b78e2 (patch)
treebf4c87039e552ac92a140f96d23156bdf37f734a
parent321de68b216400d3542e34d9c64c4aa261e60341 (diff)
downloadrockbox-e1475a38ef89ef7bb36aeb1238bf5f7d139b78e2.tar.gz
rockbox-e1475a38ef89ef7bb36aeb1238bf5f7d139b78e2.zip
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
-rw-r--r--apps/plugin.c3
-rw-r--r--lib/tlsf/src/tlsf.c3
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)
921 return -1; 921 return -1;
922 } 922 }
923#if (CONFIG_PLATFORM & PLATFORM_NATIVE) 923#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
924 plugin_size = hdr->end_addr - pluginbuf; 924 /* tlsf crashes observed on arm with 0x4 aligned addresses */
925 plugin_size = ALIGN_UP(hdr->end_addr - pluginbuf, 0x8);
925#else 926#else
926 plugin_size = 0; 927 plugin_size = 0;
927#endif 928#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)
508 508
509 /* FW 28-10-17: disabled memset due to crashes on ARM. Functions 509 /* FW 28-10-17: disabled memset due to crashes on ARM. Functions
510 * fine without it. */ 510 * fine without it. */
511 /* memset(area, 0, area_size); */ 511 /* BILGUS 17-7-19 re-enabled after setting pluginbuf aligned to 8 bytes */
512 memset(area, 0, area_size);
512 ptr = tlsf->area_head; 513 ptr = tlsf->area_head;
513 ptr_prev = 0; 514 ptr_prev = 0;
514 515