aboutsummaryrefslogtreecommitdiff
path: root/core/kernel
diff options
context:
space:
mode:
authorJens Wiklander <jens.wiklander@linaro.org>2017-10-03 08:09:34 +0200
committerJérôme Forissier <jerome.forissier@linaro.org>2017-11-09 12:56:19 +0100
commit06fe42167e0d6adc58d6fcba24ed97e6102dd47b (patch)
tree9b6200b8158b4a66a8d458661cba4b02f86eef57 /core/kernel
parent127b5e9949d6cd7c7ad1b9052dc0009768f76981 (diff)
core: asan: provide asan_memcpy_unchecked()
Provides asan_memcpy_unchecked() which does a memcpy() that isn't checked against the tagging in the ASAN shadow area. If ASAN isn't enabled it's replaced by a direct call to memcpy(). Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Diffstat (limited to 'core/kernel')
-rw-r--r--core/kernel/asan.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/core/kernel/asan.c b/core/kernel/asan.c
index c1008887..fe34d57c 100644
--- a/core/kernel/asan.c
+++ b/core/kernel/asan.c
@@ -158,6 +158,19 @@ void *asan_memset_unchecked(void *s, int c, size_t n)
return s;
}
+void *asan_memcpy_unchecked(void *__restrict dst, const void *__restrict src,
+ size_t len)
+{
+ uint8_t *__restrict d = dst;
+ const uint8_t *__restrict s = src;
+ size_t n;
+
+ for (n = 0; n < len; n++)
+ d[n] = s[n];
+
+ return dst;
+}
+
void asan_start(void)
{
assert(asan_va_base && !asan_active);