On Tue, Nov 21, 2023 at 11:07 PM Ilya Leoshkevich <iii@xxxxxxxxxxxxx> 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@xxxxxxxxxxxxx> > --- > 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.