Re: [PATCH v2 09/33] kmsan: Introduce kmsan_memmove_metadata()
From: Alexander Potapenko <glider@google.com>
Date: 2023-12-08 16:52:32
Also in:
linux-mm, linux-s390, lkml
From: Alexander Potapenko <glider@google.com>
Date: 2023-12-08 16:52:32
Also in:
linux-mm, linux-s390, lkml
On Tue, Nov 21, 2023 at 11:07 PM Ilya Leoshkevich [off-list ref] wrote:
It is useful to manually copy metadata in order to describe the effects of memmove()-like logic in uninstrumented code or inline asm. Introduce kmsan_memmove_metadata() for this purpose. Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> --- include/linux/kmsan-checks.h | 14 ++++++++++++++ mm/kmsan/hooks.c | 11 +++++++++++ 2 files changed, 25 insertions(+)diff --git a/include/linux/kmsan-checks.h b/include/linux/kmsan-checks.h index c4cae333deec..5218973f0ad0 100644 --- a/include/linux/kmsan-checks.h +++ b/include/linux/kmsan-checks.h@@ -61,6 +61,17 @@ void kmsan_check_memory(const void *address, size_t size); void kmsan_copy_to_user(void __user *to, const void *from, size_t to_copy, size_t left); +/** + * kmsan_memmove_metadata() - Copy kernel memory range metadata. + * @dst: start of the destination kernel memory range. + * @src: start of the source kernel memory range. + * @n: size of the memory ranges. + * + * KMSAN will treat the destination range as if its contents were memmove()d + * from the source range. + */ +void kmsan_memmove_metadata(void *dst, const void *src, size_t n);
As noted in patch 18/33, I am pretty sure we shouldn't need this function.