From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B8C6FC4360F for ; Tue, 26 Feb 2019 05:12:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7D245217F9 for ; Tue, 26 Feb 2019 05:12:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=axtens.net header.i=@axtens.net header.b="e55m6nKW" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726186AbfBZFMe (ORCPT ); Tue, 26 Feb 2019 00:12:34 -0500 Received: from mail-pf1-f194.google.com ([209.85.210.194]:35339 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725881AbfBZFMe (ORCPT ); Tue, 26 Feb 2019 00:12:34 -0500 Received: by mail-pf1-f194.google.com with SMTP id j5so5639457pfa.2 for ; Mon, 25 Feb 2019 21:12:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axtens.net; s=google; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version; bh=jP7E96nDoS9qSn8Kxb3Jp/bLxbA/jS+6WHNjYKFaHjE=; b=e55m6nKW/IQe++VEbFmJ3PdWMLlNZdt+OvmM+JvnjNi4qDJ0NM71riTgrciXkTr2/d XOyow++bPK333G+xGQ94OB3Mpc36jFTiBk1xLUyrNHdd+jxuz4xyhsKq24yIKGDXgYyw HJmDnxCSixGHOTPu7P25HX5DZEjJXzAyHMzG0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version; bh=jP7E96nDoS9qSn8Kxb3Jp/bLxbA/jS+6WHNjYKFaHjE=; b=r8OPOog8X4/GEqiVzqJLIcK5LW/4R8FLpP2ebjQAldmEOQlWHd/J5uScOcKLRq56uM Fsb7bnhhCL3vxP4YSkupV8Ju66AipE1q67XUUq8M6iuBh45DXguoSHKtq5FbqgUw/7fc ttbpRMnxoXJIAfh2D1I8jJPEspfbh3RVDF1UfSxvzjccUzOSbgrpNljmrD/+bMqr53GY 1JL41hfsuVaPqTKHEw7QPSOBs0YRVCIA71PQYrDloWe+hOqPKFkU3DiFEYUYr+cRs3Nd k5fBDl0UkcYiehP39q6hWh2z/fEQGJSSpEHl+ScjQHI2UBibM8iLNZidBri6Fb3ihL78 +EVQ== X-Gm-Message-State: AHQUAualevc/lRp4YB5ywD+L0SsKkz+LPJXqPZfrqYu1FIGtp4OxUPqo RwneMl5Q8ThZCPiT71h4OXgL4A== X-Google-Smtp-Source: AHgI3IaSLGOpU22EpGz/ie7BujSE7kSVELONx0Juwd5c5vPPZ5pv3S8o7D4lS8F/xPSn7sZWKZdL1w== X-Received: by 2002:a63:354a:: with SMTP id c71mr22981364pga.150.1551157953041; Mon, 25 Feb 2019 21:12:33 -0800 (PST) Received: from localhost (124-171-134-245.dyn.iinet.net.au. [124.171.134.245]) by smtp.gmail.com with ESMTPSA id d5sm16233714pfo.83.2019.02.25.21.12.31 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 25 Feb 2019 21:12:32 -0800 (PST) From: Daniel Axtens To: Christophe Leroy , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Nicholas Piggin , "Aneesh Kumar K.V" , Andrey Ryabinin , Alexander Potapenko , Dmitry Vyukov Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, kasan-dev@googlegroups.com, linux-mm@kvack.org Subject: Re: [PATCH v7 07/11] powerpc/32: prepare shadow area for KASAN In-Reply-To: References: Date: Tue, 26 Feb 2019 16:12:29 +1100 Message-ID: <87a7ij2kw2.fsf@dja-thinkpad.axtens.net> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Christophe Leroy writes: > This patch prepares a shadow area for KASAN. > > The shadow area will be at the top of the kernel virtual > memory space above the fixmap area and will occupy one > eighth of the total kernel virtual memory space. > > Signed-off-by: Christophe Leroy > --- > arch/powerpc/Kconfig | 5 +++++ > arch/powerpc/include/asm/fixmap.h | 5 +++++ > arch/powerpc/include/asm/kasan.h | 17 +++++++++++++++++ > arch/powerpc/mm/mem.c | 4 ++++ > arch/powerpc/mm/ptdump/ptdump.c | 8 ++++++++ > 5 files changed, 39 insertions(+) > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index 652c25260838..f446e016f4a1 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -382,6 +382,11 @@ config PGTABLE_LEVELS > default 3 if PPC_64K_PAGES && !PPC_BOOK3S_64 > default 4 > > +config KASAN_SHADOW_OFFSET > + hex > + depends on KASAN > + default 0xe0000000 > + Should this live in Kconfig.debug? Regards, Daniel > source "arch/powerpc/sysdev/Kconfig" > source "arch/powerpc/platforms/Kconfig" > > diff --git a/arch/powerpc/include/asm/fixmap.h b/arch/powerpc/include/asm/fixmap.h > index b9fbed84ddca..51a1a309c919 100644 > --- a/arch/powerpc/include/asm/fixmap.h > +++ b/arch/powerpc/include/asm/fixmap.h > @@ -22,7 +22,12 @@ > #include > #endif > > +#ifdef CONFIG_KASAN > +#include > +#define FIXADDR_TOP KASAN_SHADOW_START > +#else > #define FIXADDR_TOP ((unsigned long)(-PAGE_SIZE)) > +#endif > > /* > * Here we define all the compile-time 'special' virtual > diff --git a/arch/powerpc/include/asm/kasan.h b/arch/powerpc/include/asm/kasan.h > index 2efd0e42cfc9..b554d3bd3e2c 100644 > --- a/arch/powerpc/include/asm/kasan.h > +++ b/arch/powerpc/include/asm/kasan.h > @@ -12,4 +12,21 @@ > #define EXPORT_SYMBOL_KASAN(fn) EXPORT_SYMBOL(fn) > #endif > > +#ifndef __ASSEMBLY__ > + > +#include > +#include > + > +#define KASAN_SHADOW_SCALE_SHIFT 3 > + > +#define KASAN_SHADOW_OFFSET ASM_CONST(CONFIG_KASAN_SHADOW_OFFSET) > + > +#define KASAN_SHADOW_START (KASAN_SHADOW_OFFSET + \ > + (PAGE_OFFSET >> KASAN_SHADOW_SCALE_SHIFT)) > + > +#define KASAN_SHADOW_END 0UL > + > +#define KASAN_SHADOW_SIZE (KASAN_SHADOW_END - KASAN_SHADOW_START) > + > +#endif /* __ASSEMBLY */ > #endif > diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c > index f6787f90e158..4e7fa4eb2dd3 100644 > --- a/arch/powerpc/mm/mem.c > +++ b/arch/powerpc/mm/mem.c > @@ -309,6 +309,10 @@ void __init mem_init(void) > mem_init_print_info(NULL); > #ifdef CONFIG_PPC32 > pr_info("Kernel virtual memory layout:\n"); > +#ifdef CONFIG_KASAN > + pr_info(" * 0x%08lx..0x%08lx : kasan shadow mem\n", > + KASAN_SHADOW_START, KASAN_SHADOW_END); > +#endif > pr_info(" * 0x%08lx..0x%08lx : fixmap\n", FIXADDR_START, FIXADDR_TOP); > #ifdef CONFIG_HIGHMEM > pr_info(" * 0x%08lx..0x%08lx : highmem PTEs\n", > diff --git a/arch/powerpc/mm/ptdump/ptdump.c b/arch/powerpc/mm/ptdump/ptdump.c > index 37138428ab55..812ed680024f 100644 > --- a/arch/powerpc/mm/ptdump/ptdump.c > +++ b/arch/powerpc/mm/ptdump/ptdump.c > @@ -101,6 +101,10 @@ static struct addr_marker address_markers[] = { > { 0, "Fixmap start" }, > { 0, "Fixmap end" }, > #endif > +#ifdef CONFIG_KASAN > + { 0, "kasan shadow mem start" }, > + { 0, "kasan shadow mem end" }, > +#endif > { -1, NULL }, > }; > > @@ -322,6 +326,10 @@ static void populate_markers(void) > #endif > address_markers[i++].start_address = FIXADDR_START; > address_markers[i++].start_address = FIXADDR_TOP; > +#ifdef CONFIG_KASAN > + address_markers[i++].start_address = KASAN_SHADOW_START; > + address_markers[i++].start_address = KASAN_SHADOW_END; > +#endif > #endif /* CONFIG_PPC64 */ > } > > -- > 2.13.3