diff --git a/cpu/native/syscalls.c b/cpu/native/syscalls.c
index f3a6811c4716276b93479c080f9636315ee2d4ed..d9385b40d6fecd0aaffcdf9909b606da593f5950 100644
--- a/cpu/native/syscalls.c
+++ b/cpu/native/syscalls.c
@@ -134,6 +134,10 @@ void _native_syscall_leave(void)
     }
 }
 
+/* make use of TLSF if it is included, except when building with valgrind
+ * support, where one probably wants to make use of valgrind's memory leak
+ * detection abilities*/
+#if !(defined MODULE_TLSF) || (defined(HAVE_VALGRIND_H))
 int _native_in_malloc = 0;
 void *malloc(size_t size)
 {
@@ -204,6 +208,7 @@ void *realloc(void *ptr, size_t size)
     _native_syscall_leave();
     return r;
 }
+#endif /* !(defined MODULE_TLSF) || (defined(HAVE_VALGRIND_H)) */
 
 ssize_t _native_read(int fd, void *buf, size_t count)
 {