• A
    compiler, atomics, kasan: Provide READ_ONCE_NOCHECK() · d976441f
    Andrey Ryabinin 提交于
    Some code may perform racy by design memory reads. This could be
    harmless, yet such code may produce KASAN warnings.
    
    To hide such accesses from KASAN this patch introduces
    READ_ONCE_NOCHECK() macro. KASAN will not check the memory
    accessed by READ_ONCE_NOCHECK(). The KernelThreadSanitizer
    (KTSAN) is going to ignore it as well.
    
    This patch creates __read_once_size_nocheck() a clone of
    __read_once_size(). The only difference between them is
    'no_sanitized_address' attribute appended to '*_nocheck'
    function. This attribute tells the compiler that instrumentation
    of memory accesses should not be applied to that function. We
    declare it as static '__maybe_unsed' because GCC is not capable
    to inline such function:
    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368
    
    With KASAN=n READ_ONCE_NOCHECK() is just a clone of READ_ONCE().
    Signed-off-by: NAndrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andrey Konovalov <andreyknvl@google.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Kostya Serebryany <kcc@google.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>
    Cc: kasan-dev <kasan-dev@googlegroups.com>
    Link: http://lkml.kernel.org/r/1445243838-17763-2-git-send-email-aryabinin@virtuozzo.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
    d976441f
compiler-gcc.h 8.7 KB