From: Alexander Potapenko <glider@google.com>
To: adech.fo@gmail.com, cl@linux.com, dvyukov@google.com,
akpm@linux-foundation.org, ryabinin.a.a@gmail.com,
rostedt@goodmis.org, iamjoonsoo.kim@lge.com, js1304@gmail.com,
kcc@google.com
Cc: kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org,
linux-mm@kvack.org
Subject: [PATCH v4 0/7] SLAB support for KASAN
Date: Fri, 26 Feb 2016 17:48:40 +0100 [thread overview]
Message-ID: <cover.1456504662.git.glider@google.com> (raw)
This patch set implements SLAB support for KASAN
Unlike SLUB, SLAB doesn't store allocation/deallocation stacks for heap
objects, therefore we reimplement this feature in mm/kasan/stackdepot.c.
The intention is to ultimately switch SLUB to use this implementation as
well, which will save a lot of memory (right now SLUB bloats each object
by 256 bytes to store the allocation/deallocation stacks).
Also neither SLUB nor SLAB delay the reuse of freed memory chunks, which
is necessary for better detection of use-after-free errors. We introduce
memory quarantine (mm/kasan/quarantine.c), which allows delayed reuse of
deallocated memory.
Alexander Potapenko (7):
kasan: Modify kmalloc_large_oob_right(), add
kmalloc_pagealloc_oob_right()
mm, kasan: SLAB support
mm, kasan: Added GFP flags to KASAN API
arch, ftrace: For KASAN put hard/soft IRQ entries into separate
sections
mm, kasan: Stackdepot implementation. Enable stackdepot for SLAB
kasan: Test fix: Warn if the UAF could not be detected in kmalloc_uaf2
mm: kasan: Initial memory quarantine implementation
---
v2: - merged two patches that touched kmalloc_large_oob_right
- moved stackdepot implementation to lib/
- moved IRQ definitions to include/linux/interrupt.h
v3: - minor description changes
- store deallocation info in the "mm, kasan: SLAB support" patch
v4: - fix kbuild error reports
---
Documentation/kasan.txt | 5 +-
arch/arm/kernel/vmlinux.lds.S | 1 +
arch/arm64/kernel/vmlinux.lds.S | 1 +
arch/blackfin/kernel/vmlinux.lds.S | 1 +
arch/c6x/kernel/vmlinux.lds.S | 1 +
arch/metag/kernel/vmlinux.lds.S | 1 +
arch/microblaze/kernel/vmlinux.lds.S | 1 +
arch/mips/kernel/vmlinux.lds.S | 1 +
arch/nios2/kernel/vmlinux.lds.S | 1 +
arch/openrisc/kernel/vmlinux.lds.S | 1 +
arch/parisc/kernel/vmlinux.lds.S | 1 +
arch/powerpc/kernel/vmlinux.lds.S | 1 +
arch/s390/kernel/vmlinux.lds.S | 1 +
arch/sh/kernel/vmlinux.lds.S | 1 +
arch/sparc/kernel/vmlinux.lds.S | 1 +
arch/tile/kernel/vmlinux.lds.S | 1 +
arch/x86/kernel/Makefile | 1 +
arch/x86/kernel/vmlinux.lds.S | 1 +
include/asm-generic/vmlinux.lds.h | 12 +-
include/linux/ftrace.h | 11 --
include/linux/interrupt.h | 20 +++
include/linux/kasan.h | 63 ++++++--
include/linux/slab.h | 10 +-
include/linux/slab_def.h | 14 ++
include/linux/slub_def.h | 11 ++
include/linux/stackdepot.h | 32 ++++
kernel/softirq.c | 2 +-
kernel/trace/trace_functions_graph.c | 1 +
lib/Kconfig.kasan | 4 +-
lib/Makefile | 7 +
lib/stackdepot.c | 274 +++++++++++++++++++++++++++++++
lib/test_kasan.c | 59 ++++++-
mm/Makefile | 1 +
mm/kasan/Makefile | 4 +
mm/kasan/kasan.c | 221 +++++++++++++++++++++++--
mm/kasan/kasan.h | 45 ++++++
mm/kasan/quarantine.c | 306 +++++++++++++++++++++++++++++++++++
mm/kasan/report.c | 71 ++++++--
mm/mempool.c | 23 +--
mm/page_alloc.c | 2 +-
mm/slab.c | 58 ++++++-
mm/slab.h | 2 +
mm/slab_common.c | 8 +-
mm/slub.c | 21 +--
44 files changed, 1214 insertions(+), 90 deletions(-)
create mode 100644 include/linux/stackdepot.h
create mode 100644 lib/stackdepot.c
create mode 100644 mm/kasan/quarantine.c
--
2.7.0.rc3.207.g0ac5344
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Alexander Potapenko <glider@google.com>
To: adech.fo@gmail.com, cl@linux.com, dvyukov@google.com,
akpm@linux-foundation.org, ryabinin.a.a@gmail.com,
rostedt@goodmis.org, iamjoonsoo.kim@lge.com, js1304@gmail.com,
kcc@google.com
Cc: kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org,
linux-mm@kvack.org
Subject: [PATCH v4 0/7] SLAB support for KASAN
Date: Fri, 26 Feb 2016 17:48:40 +0100 [thread overview]
Message-ID: <cover.1456504662.git.glider@google.com> (raw)
This patch set implements SLAB support for KASAN
Unlike SLUB, SLAB doesn't store allocation/deallocation stacks for heap
objects, therefore we reimplement this feature in mm/kasan/stackdepot.c.
The intention is to ultimately switch SLUB to use this implementation as
well, which will save a lot of memory (right now SLUB bloats each object
by 256 bytes to store the allocation/deallocation stacks).
Also neither SLUB nor SLAB delay the reuse of freed memory chunks, which
is necessary for better detection of use-after-free errors. We introduce
memory quarantine (mm/kasan/quarantine.c), which allows delayed reuse of
deallocated memory.
Alexander Potapenko (7):
kasan: Modify kmalloc_large_oob_right(), add
kmalloc_pagealloc_oob_right()
mm, kasan: SLAB support
mm, kasan: Added GFP flags to KASAN API
arch, ftrace: For KASAN put hard/soft IRQ entries into separate
sections
mm, kasan: Stackdepot implementation. Enable stackdepot for SLAB
kasan: Test fix: Warn if the UAF could not be detected in kmalloc_uaf2
mm: kasan: Initial memory quarantine implementation
---
v2: - merged two patches that touched kmalloc_large_oob_right
- moved stackdepot implementation to lib/
- moved IRQ definitions to include/linux/interrupt.h
v3: - minor description changes
- store deallocation info in the "mm, kasan: SLAB support" patch
v4: - fix kbuild error reports
---
Documentation/kasan.txt | 5 +-
arch/arm/kernel/vmlinux.lds.S | 1 +
arch/arm64/kernel/vmlinux.lds.S | 1 +
arch/blackfin/kernel/vmlinux.lds.S | 1 +
arch/c6x/kernel/vmlinux.lds.S | 1 +
arch/metag/kernel/vmlinux.lds.S | 1 +
arch/microblaze/kernel/vmlinux.lds.S | 1 +
arch/mips/kernel/vmlinux.lds.S | 1 +
arch/nios2/kernel/vmlinux.lds.S | 1 +
arch/openrisc/kernel/vmlinux.lds.S | 1 +
arch/parisc/kernel/vmlinux.lds.S | 1 +
arch/powerpc/kernel/vmlinux.lds.S | 1 +
arch/s390/kernel/vmlinux.lds.S | 1 +
arch/sh/kernel/vmlinux.lds.S | 1 +
arch/sparc/kernel/vmlinux.lds.S | 1 +
arch/tile/kernel/vmlinux.lds.S | 1 +
arch/x86/kernel/Makefile | 1 +
arch/x86/kernel/vmlinux.lds.S | 1 +
include/asm-generic/vmlinux.lds.h | 12 +-
include/linux/ftrace.h | 11 --
include/linux/interrupt.h | 20 +++
include/linux/kasan.h | 63 ++++++--
include/linux/slab.h | 10 +-
include/linux/slab_def.h | 14 ++
include/linux/slub_def.h | 11 ++
include/linux/stackdepot.h | 32 ++++
kernel/softirq.c | 2 +-
kernel/trace/trace_functions_graph.c | 1 +
lib/Kconfig.kasan | 4 +-
lib/Makefile | 7 +
lib/stackdepot.c | 274 +++++++++++++++++++++++++++++++
lib/test_kasan.c | 59 ++++++-
mm/Makefile | 1 +
mm/kasan/Makefile | 4 +
mm/kasan/kasan.c | 221 +++++++++++++++++++++++--
mm/kasan/kasan.h | 45 ++++++
mm/kasan/quarantine.c | 306 +++++++++++++++++++++++++++++++++++
mm/kasan/report.c | 71 ++++++--
mm/mempool.c | 23 +--
mm/page_alloc.c | 2 +-
mm/slab.c | 58 ++++++-
mm/slab.h | 2 +
mm/slab_common.c | 8 +-
mm/slub.c | 21 +--
44 files changed, 1214 insertions(+), 90 deletions(-)
create mode 100644 include/linux/stackdepot.h
create mode 100644 lib/stackdepot.c
create mode 100644 mm/kasan/quarantine.c
--
2.7.0.rc3.207.g0ac5344
next reply other threads:[~2016-02-26 16:48 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-26 16:48 Alexander Potapenko [this message]
2016-02-26 16:48 ` [PATCH v4 0/7] SLAB support for KASAN Alexander Potapenko
2016-02-26 16:48 ` [PATCH v4 1/7] kasan: Modify kmalloc_large_oob_right(), add kmalloc_pagealloc_oob_right() Alexander Potapenko
2016-02-26 16:48 ` Alexander Potapenko
2016-02-26 16:48 ` [PATCH v4 2/7] mm, kasan: SLAB support Alexander Potapenko
2016-02-26 16:48 ` Alexander Potapenko
2016-02-29 15:10 ` Andrey Ryabinin
2016-02-29 15:10 ` Andrey Ryabinin
2016-02-29 18:28 ` Alexander Potapenko
2016-02-29 18:28 ` Alexander Potapenko
2016-02-29 18:33 ` Alexander Potapenko
2016-02-29 18:33 ` Alexander Potapenko
2016-03-01 14:34 ` Andrey Ryabinin
2016-03-01 14:34 ` Andrey Ryabinin
2016-02-26 16:48 ` [PATCH v4 3/7] mm, kasan: Added GFP flags to KASAN API Alexander Potapenko
2016-02-26 16:48 ` Alexander Potapenko
2016-02-26 16:48 ` [PATCH v4 4/7] arch, ftrace: For KASAN put hard/soft IRQ entries into separate sections Alexander Potapenko
2016-02-26 16:48 ` Alexander Potapenko
2016-02-27 1:44 ` kbuild test robot
2016-03-02 17:41 ` Steven Rostedt
2016-03-02 17:41 ` Steven Rostedt
2016-02-26 16:48 ` [PATCH v4 5/7] mm, kasan: Stackdepot implementation. Enable stackdepot for SLAB Alexander Potapenko
2016-02-26 16:48 ` Alexander Potapenko
2016-02-29 16:29 ` Andrey Ryabinin
2016-02-29 16:29 ` Andrey Ryabinin
2016-02-29 17:12 ` Dmitry Vyukov
2016-02-29 17:12 ` Dmitry Vyukov
2016-03-01 11:57 ` Andrey Ryabinin
2016-03-01 11:57 ` Andrey Ryabinin
2016-03-04 14:52 ` Alexander Potapenko
2016-03-04 14:52 ` Alexander Potapenko
2016-03-04 15:01 ` Andrey Ryabinin
2016-03-04 15:01 ` Andrey Ryabinin
2016-03-04 15:06 ` Alexander Potapenko
2016-03-04 15:06 ` Alexander Potapenko
2016-03-04 16:30 ` Andrey Ryabinin
2016-03-04 16:30 ` Andrey Ryabinin
2016-03-08 11:42 ` Alexander Potapenko
2016-03-08 11:42 ` Alexander Potapenko
2016-03-10 16:58 ` Andrey Ryabinin
2016-03-10 16:58 ` Andrey Ryabinin
2016-03-11 11:18 ` Alexander Potapenko
2016-03-11 11:18 ` Alexander Potapenko
2016-03-11 11:43 ` Andrey Ryabinin
2016-03-11 11:43 ` Andrey Ryabinin
2016-03-11 14:49 ` Alexander Potapenko
2016-03-11 14:49 ` Alexander Potapenko
2016-03-11 16:10 ` Steven Rostedt
2016-03-11 16:10 ` Steven Rostedt
2016-03-08 11:30 ` Alexander Potapenko
2016-03-08 11:30 ` Alexander Potapenko
2016-02-26 16:48 ` [PATCH v4 6/7] kasan: Test fix: Warn if the UAF could not be detected in kmalloc_uaf2 Alexander Potapenko
2016-02-26 16:48 ` Alexander Potapenko
2016-02-29 16:31 ` Andrey Ryabinin
2016-02-29 16:31 ` Andrey Ryabinin
2016-02-26 16:48 ` [PATCH v4 7/7] mm: kasan: Initial memory quarantine implementation Alexander Potapenko
2016-02-26 16:48 ` Alexander Potapenko
2016-02-26 22:28 ` [PATCH v4 0/7] SLAB support for KASAN Andrew Morton
2016-02-26 22:28 ` Andrew Morton
-- strict thread matches above, loose matches on Subject: below --
2016-03-09 11:05 Alexander Potapenko
2016-03-09 11:05 ` Alexander Potapenko
2016-03-09 11:12 ` Alexander Potapenko
2016-03-09 11:12 ` Alexander Potapenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1456504662.git.glider@google.com \
--to=glider@google.com \
--cc=adech.fo@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=cl@linux.com \
--cc=dvyukov@google.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=js1304@gmail.com \
--cc=kasan-dev@googlegroups.com \
--cc=kcc@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=rostedt@goodmis.org \
--cc=ryabinin.a.a@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.