Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932222AbcCILMj (ORCPT ); Wed, 9 Mar 2016 06:12:39 -0500 Received: from mail-wm0-f54.google.com ([74.125.82.54]:33443 "EHLO mail-wm0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751505AbcCILMa convert rfc822-to-8bit (ORCPT ); Wed, 9 Mar 2016 06:12:30 -0500 MIME-Version: 1.0 In-Reply-To: References: Date: Wed, 9 Mar 2016 12:12:29 +0100 Message-ID: Subject: Re: [PATCH v4 0/7] SLAB support for KASAN From: Alexander Potapenko To: Andrey Konovalov , Christoph Lameter , Dmitriy Vyukov , Andrew Morton , Andrey Ryabinin , Steven Rostedt , Joonsoo Kim , JoonSoo Kim , Kostya Serebryany Cc: kasan-dev , LKML , Linux Memory Management List Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4606 Lines: 110 Sorry, this cover letter had incorrect version, I've resent it with the corrected one. On Wed, Mar 9, 2016 at 12:05 PM, Alexander Potapenko wrote: > 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 > > v5: - SLAB allocator, stackdepot: adopted suggestions by Andrey Ryabinin > - IRQ: fixed kbuild warnings > --- > > Documentation/kasan.txt | 5 +- > arch/arm/include/asm/exception.h | 2 +- > arch/arm/kernel/vmlinux.lds.S | 1 + > arch/arm64/include/asm/exception.h | 2 +- > 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 | 3 + > lib/Kconfig.kasan | 5 +- > lib/Makefile | 3 + > lib/stackdepot.c | 275 +++++++++++++++++++++++++++++++ > 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 | 64 ++++++-- > mm/mempool.c | 23 +-- > mm/page_alloc.c | 2 +- > mm/slab.c | 53 +++++- > mm/slab.h | 4 +- > mm/slab_common.c | 8 +- > mm/slub.c | 19 +-- > 47 files changed, 1205 insertions(+), 92 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 > -- 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