• Marco Elver's avatar
    include/linux: Add instrumented.h infrastructure · 36e4d4dd
    Marco Elver authored
    This adds instrumented.h, which provides generic wrappers for memory
    access instrumentation that the compiler cannot emit for various
    sanitizers. Currently this unifies KASAN and KCSAN instrumentation. In
    future this will also include KMSAN instrumentation.
    
    Note that, copy_{to,from}_user should use special instrumentation, since
    we should be able to instrument both source and destination memory
    accesses if both are kernel memory.
    
    The current patch only instruments the memory access where the address
    is always in kernel space, however, both may in fact be kernel addresses
    when a compat syscall passes an argument allocated in the kernel to a
    real syscall. In a future change, both KASAN and KCSAN should check both
    addresses in such cases, as well as KMSAN will make use of both
    addresses. [It made more sense to provide the completed function
    signature, rather than updating it and changing all locations again at a
    later time.]
    Suggested-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarMarco Elver <elver@google.com>
    Acked-by: default avatarAlexander Potapenko <glider@google.com>
    Reviewed-by: default avatarDmitry Vyukov <dvyukov@google.com>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    36e4d4dd
instrumented.h 2.8 KB