[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <09cb5553-d84a-0e62-5174-315c14b88833@arm.com>
Date: Wed, 25 Jul 2018 14:44:10 +0100
From: "Vincenzo Frascino@...s" <vincenzo.frascino@....com>
To: Andrey Konovalov <andreyknvl@...gle.com>,
Andrey Ryabinin <aryabinin@...tuozzo.com>,
Alexander Potapenko <glider@...gle.com>,
Dmitry Vyukov <dvyukov@...gle.com>,
Catalin Marinas <catalin.marinas@....com>,
Will Deacon <will.deacon@....com>,
Christoph Lameter <cl@...ux.com>,
Andrew Morton <akpm@...ux-foundation.org>,
Mark Rutland <mark.rutland@....com>,
Nick Desaulniers <ndesaulniers@...gle.com>,
Marc Zyngier <marc.zyngier@....com>,
Dave Martin <dave.martin@....com>,
Ard Biesheuvel <ard.biesheuvel@...aro.org>,
"Eric W . Biederman" <ebiederm@...ssion.com>,
Ingo Molnar <mingo@...nel.org>,
Paul Lawrence <paullawrence@...gle.com>,
Geert Uytterhoeven <geert@...ux-m68k.org>,
Arnd Bergmann <arnd@...db.de>,
"Kirill A . Shutemov" <kirill.shutemov@...ux.intel.com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Kate Stewart <kstewart@...uxfoundation.org>,
Mike Rapoport <rppt@...ux.vnet.ibm.com>,
kasan-dev@...glegroups.com, linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-sparse@...r.kernel.org, linux-mm@...ck.org,
linux-kbuild@...r.kernel.org
Cc: Chintan Pandya <cpandya@...eaurora.org>,
Jacob Bramley <Jacob.Bramley@....com>,
Jann Horn <jannh@...gle.com>,
Ruben Ayrapetyan <Ruben.Ayrapetyan@....com>,
Lee Smith <Lee.Smith@....com>,
Kostya Serebryany <kcc@...gle.com>,
Mark Brand <markbrand@...gle.com>,
Ramana Radhakrishnan <Ramana.Radhakrishnan@....com>,
Evgeniy Stepanov <eugenis@...gle.com>
Subject: Re: [PATCH v4 13/17] khwasan: add hooks implementation
On 06/26/2018 02:15 PM, Andrey Konovalov wrote:
> @@ -325,18 +341,41 @@ void kasan_init_slab_obj(struct kmem_cache *cache, const void *object)
>
> void *kasan_slab_alloc(struct kmem_cache *cache, void *object, gfp_t flags)
> {
> - return kasan_kmalloc(cache, object, cache->object_size, flags);
> + object = kasan_kmalloc(cache, object, cache->object_size, flags);
> + if (IS_ENABLED(CONFIG_KASAN_HW) && unlikely(cache->ctor)) {
> + /*
> + * Cache constructor might use object's pointer value to
> + * initialize some of its fields.
> + */
> + cache->ctor(object);
>
This seams breaking the kmem_cache_create() contract: "The @ctor is run
when new pages are allocated by the cache."
(https://elixir.bootlin.com/linux/v3.7/source/mm/slab_common.c#L83)
Since there might be preexisting code relying on it, this could lead to
global side effects. Did you verify that this is not the case?
Another concern is performance related if we consider this solution
suitable for "near-production", since with the current implementation
you call the ctor (where present) on an object multiple times and this
ends up memsetting and repopulating the memory every time (i.e. inode.c:
inode_init_once). Do you know what is the performance impact?
--
Regards,
Vincenzo
Powered by blists - more mailing lists