Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1350433

Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable stackdepot for SLAB

From Andrey Ryabinin <ryabinin.a.a@gmail.com>
Newsgroups linux.kernel
Subject Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable stackdepot for SLAB
Date 2016-03-04 17:40 +0100
Message-ID <r90VH-14h-3@gated-at.bofh.it> (permalink)
References (3 earlier) <r7zEe-5WZ-13@gated-at.bofh.it> <r7R87-dU-21@gated-at.bofh.it> <r8ZmW-8cW-5@gated-at.bofh.it> <r8ZwB-8vJ-7@gated-at.bofh.it> <r8ZwC-8vJ-39@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


2016-03-04 18:06 GMT+03:00 Alexander Potapenko <glider@google.com>:
> On Fri, Mar 4, 2016 at 4:01 PM, Andrey Ryabinin <ryabinin.a.a@gmail.com> wrote:
>> 2016-03-04 17:52 GMT+03:00 Alexander Potapenko <glider@google.com>:
>>> On Tue, Mar 1, 2016 at 12:57 PM, Andrey Ryabinin <ryabinin.a.a@gmail.com> wrote:
>>>>>>> +
>>>>>>> +     stack->hash = hash;
>>>>>>> +     stack->size = size;
>>>>>>> +     stack->handle.slabindex = depot_index;
>>>>>>> +     stack->handle.offset = depot_offset >> STACK_ALLOC_ALIGN;
>>>>>>> +     __memcpy(stack->entries, entries, size * sizeof(unsigned long));
>>>>>>
>>>>>> s/__memcpy/memcpy/
>>>>>
>>>>> memcpy should be instrumented by asan/tsan, and we would like to avoid
>>>>> that instrumentation here.
>>>>
>>>> KASAN_SANITIZE_* := n already takes care about this.
>>>> __memcpy() is a special thing solely for kasan internals and some assembly code.
>>>> And it's not available generally.
>>> As far as I can see, KASAN_SANITIZE_*:=n does not guarantee it.
>>> It just removes KASAN flags from GCC command line, it does not
>>> necessarily replace memcpy() calls with some kind of a
>>> non-instrumented memcpy().
>>>
>>
>> With removed kasan cflags '__SANITIZE_ADDRESS__' is not defined,
>> hence enable the following defines from arch/x86/include/asm/string_64.h:
>>
>> #if defined(CONFIG_KASAN) && !defined(__SANITIZE_ADDRESS__)
>>
>> /*
>>  * For files that not instrumented (e.g. mm/slub.c) we
>>  * should use not instrumented version of mem* functions.
>>  */
>>
>> #undef memcpy
>> #define memcpy(dst, src, len) __memcpy(dst, src, len)
>> #define memmove(dst, src, len) __memmove(dst, src, len)
>> #define memset(s, c, n) __memset(s, c, n)
>> #endif
> Nice!
> What do you think about providing stub .c files to decouple the shared
> code used by KASAN runtime from the rest of kernel?

Actually, I'm not quite understand why you need that at all, but your
idea will not link due to multiple definitions of the same functions.
Link problem should be easy to workaround with 'objcopy
--prefix-symbol=' though.

> (This is a completely different story though and can be done separately).
>
>
> --
> Alexander Potapenko
> Software Engineer
>
> Google Germany GmbH
> Erika-Mann-Straße, 33
> 80636 München
>
> Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle
> Registergericht und -nummer: Hamburg, HRB 86891
> Sitz der Gesellschaft: Hamburg

Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable stackdepot for SLAB Alexander Potapenko <glider@google.com> - 2016-02-26 17:50 +0100
  Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable  stackdepot for SLAB Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2016-02-29 17:40 +0100
    Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable  stackdepot for SLAB Dmitry Vyukov <dvyukov@google.com> - 2016-02-29 18:20 +0100
      Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable  stackdepot for SLAB Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2016-03-01 13:00 +0100
        Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable  stackdepot for SLAB Alexander Potapenko <glider@google.com> - 2016-03-04 16:00 +0100
          Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable  stackdepot for SLAB Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2016-03-04 16:10 +0100
            Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable  stackdepot for SLAB Alexander Potapenko <glider@google.com> - 2016-03-04 16:10 +0100
              Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable  stackdepot for SLAB Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2016-03-04 17:40 +0100
        Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable  stackdepot for SLAB Alexander Potapenko <glider@google.com> - 2016-03-08 12:50 +0100
          Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable  stackdepot for SLAB Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2016-03-10 18:00 +0100
            Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable  stackdepot for SLAB Alexander Potapenko <glider@google.com> - 2016-03-11 12:20 +0100
              Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable  stackdepot for SLAB Andrey Ryabinin <ryabinin.a.a@gmail.com> - 2016-03-11 12:50 +0100
                Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable  stackdepot for SLAB Alexander Potapenko <glider@google.com> - 2016-03-11 16:00 +0100
                Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable  stackdepot for SLAB Steven Rostedt <rostedt@goodmis.org> - 2016-03-11 17:20 +0100
    Re: [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable  stackdepot for SLAB Alexander Potapenko <glider@google.com> - 2016-03-08 12:40 +0100

csiph-web