Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2158753pxb; Fri, 5 Feb 2021 10:17:48 -0800 (PST) X-Google-Smtp-Source: ABdhPJycbfsYFiTdjDJs8y/T1OyE2ctxFlw+WlWctpzuAnMURbWN74shhq0lyItYKJXMFtzfD28L X-Received: by 2002:a05:6402:50ca:: with SMTP id h10mr4734374edb.181.1612549068541; Fri, 05 Feb 2021 10:17:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612549068; cv=none; d=google.com; s=arc-20160816; b=XrwHWH+WdNpbMT0q3fXtClQeoxHN/yMCcKIbziw7y5AfBnIVemzhD0P+BTrTQlRZFr 11oKxnanfl7AhPQDPSWy2ERkd2oUVJ6dpCbxhmipbSJ3sUFPowyLNM9PO1Fr1/Hboo9o cPAz7bw2TmjJvHr5P8dA/J6wS/zfD/OKio1nC3tKTyq9SATMT7mqVRpRbfuU43bnqyM2 71q1Os49/uXDxRYEvroATFcaJudIQ4IcupGJ/MUdAPqJiDJT34m6+Vfi80lue1VEuk31 prT0gFbjSvHnI8f8l5N7rBFnDdbe+3e5B1bXfyd2FrUdimXpPvMNwbIF91WQ5I/j9tgq kTYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=F4x29TTVEpw+IQOs4pBG2aQj/4xmoAAS+aT8UOnwOmY=; b=LMCKS2QjTegQmXiHgmesKmpbeQ4KknkJbqZmzp8BOtRBbNwyNm+IzlGggi4wbZa2/B JF/07u+K7PJgndNt0euDzu/kzRx8sry05WqSiRM5NaVJxSIWiQf1/B21FalzYS1D1i4Q pjLLx5QFiSd/8nelEAJ6p9taUTrGq7Af3Ox95meTkUTpEhC28c6QK/WfwRAFvAEdXUt+ 8o5JQS649HInmXj0otyzXeSh8JNC4EbSexrR7YMQFjTCX+5Q1s9emf7H/TT6+fh8Xq5A D8xm7Yd8dhdCgmEcP7oOLIjqHcBrYvrf/T48uO4qz/nPJQYAp5iy9Y81wjNS50Y6PZPg Hzsg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=qknmJZd3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p17si5869459edw.347.2021.02.05.10.17.23; Fri, 05 Feb 2021 10:17:48 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=qknmJZd3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233734AbhBEQbh (ORCPT + 99 others); Fri, 5 Feb 2021 11:31:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41674 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233000AbhBEQ32 (ORCPT ); Fri, 5 Feb 2021 11:29:28 -0500 Received: from mail-vk1-xa2c.google.com (mail-vk1-xa2c.google.com [IPv6:2607:f8b0:4864:20::a2c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4B099C06178A for ; Fri, 5 Feb 2021 10:11:09 -0800 (PST) Received: by mail-vk1-xa2c.google.com with SMTP id e10so1682093vkm.2 for ; Fri, 05 Feb 2021 10:11:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=F4x29TTVEpw+IQOs4pBG2aQj/4xmoAAS+aT8UOnwOmY=; b=qknmJZd3jqr6x5X39DF2bWa4iCWwABpUdPV+kiRS7BjkpstQ3R85pT/tbr5d3hNpB9 yW0LXkiBIQ9AFs9DG2uvmihC17ZgotzN27Hng1dlGt5QTun/RUerKK2911tPvuoXn1ZI 4Qj5x0Fa4n/4T20Qe+2kDzkJuUwxbIOcCOEdtKU2SULF01iC1zgPMTeESFhTMb2BjGOz xfKAZYqWDlQvvnzppXYrhii9X4yNttSXp2f+ubulxYF5MhWK7sPq9jj178SvqlBEpC5U 9Frwc1oFfSbQaJhEktTE7yUVcL/0L7g33b9cogvvwjWiH0rNtSaE0XoSdkY1RCp4AF4l MwXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=F4x29TTVEpw+IQOs4pBG2aQj/4xmoAAS+aT8UOnwOmY=; b=f3Viw2ITW+Os4w8BI3SjFp03jtNZpJlihi7fcGHoNjdcIz4LnN9MHkXghW7pCp23Kq X1DlEledd320jnZB6PpFjT6BPiikdHtkmvb3LUSUqq9dy/asNX19/g950/Ko66A/91Om Gy1yUdQGWMvb9d75thGH/umNAgXpO8ahNinF+D9c/XZng0u2cFnIIGeiwx6c7yfq0WS2 2pAJ5DB6XdklNC5KdCmgtm2HAnjQ0SKgiLELhbRq5ws4k7NX0plJIHXsws0xE3k8Bj1e E+dRLeIQKKFu6mazDCPqdGqelWmd6Obb03slwu2EnGTNJKCU7cOXjrwCkEgkWBE88Kl2 0TOw== X-Gm-Message-State: AOAM531GQeAEFkOBtqtt8aA9d+gkNdKYDCfqPY3fpoQWh35YgrPncDLK zZ2/KyD2PLDuJoE4xyaqzcp+H7hY5xQBjnmAkig= X-Received: by 2002:a1f:9c57:: with SMTP id f84mr4084825vke.2.1612548668509; Fri, 05 Feb 2021 10:11:08 -0800 (PST) MIME-Version: 1.0 References: <20210204150100.GE20815@willie-the-truck> <20210204163721.91295-1-lecopzer@gmail.com> <20210205171859.GE22665@willie-the-truck> In-Reply-To: <20210205171859.GE22665@willie-the-truck> From: Lecopzer Chen Date: Sat, 6 Feb 2021 02:10:56 +0800 Message-ID: Subject: Re: [PATCH v2 1/4] arm64: kasan: don't populate vmalloc area for CONFIG_KASAN_VMALLOC To: Will Deacon Cc: Andrew Morton , Andrey Konovalov , ardb@kernel.org, aryabinin@virtuozzo.com, broonie@kernel.org, Catalin Marinas , dan.j.williams@intel.com, Dmitry Vyukov , Alexander Potapenko , gustavoars@kernel.org, kasan-dev@googlegroups.com, Jian-Lin Chen , linux-arm-kernel , Linux Kernel Mailing List , linux-mediatek@lists.infradead.org, linux-mm@kvack.org, linux@roeck-us.net, robin.murphy@arm.com, rppt@kernel.org, tyhicks@linux.microsoft.com, vincenzo.frascino@arm.com, yj.chiang@mediatek.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Will Deacon =E6=96=BC 2021=E5=B9=B42=E6=9C=886=E6=97=A5 = =E9=80=B1=E5=85=AD =E4=B8=8A=E5=8D=881:19=E5=AF=AB=E9=81=93=EF=BC=9A > > On Fri, Feb 05, 2021 at 12:37:21AM +0800, Lecopzer Chen wrote: > > > > > On Thu, Feb 04, 2021 at 10:46:12PM +0800, Lecopzer Chen wrote: > > > > > On Sat, Jan 09, 2021 at 06:32:49PM +0800, Lecopzer Chen wrote: > > > > > > Linux support KAsan for VMALLOC since commit 3c5c3cfb9ef4da9 > > > > > > ("kasan: support backing vmalloc space with real shadow memory"= ) > > > > > > > > > > > > Like how the MODULES_VADDR does now, just not to early populate > > > > > > the VMALLOC_START between VMALLOC_END. > > > > > > similarly, the kernel code mapping is now in the VMALLOC area a= nd > > > > > > should keep these area populated. > > > > > > > > > > > > Signed-off-by: Lecopzer Chen > > > > > > --- > > > > > > arch/arm64/mm/kasan_init.c | 23 ++++++++++++++++++----- > > > > > > 1 file changed, 18 insertions(+), 5 deletions(-) > > > > > > > > > > > > diff --git a/arch/arm64/mm/kasan_init.c b/arch/arm64/mm/kasan_i= nit.c > > > > > > index d8e66c78440e..39b218a64279 100644 > > > > > > --- a/arch/arm64/mm/kasan_init.c > > > > > > +++ b/arch/arm64/mm/kasan_init.c > > > > > > @@ -214,6 +214,7 @@ static void __init kasan_init_shadow(void) > > > > > > { > > > > > > u64 kimg_shadow_start, kimg_shadow_end; > > > > > > u64 mod_shadow_start, mod_shadow_end; > > > > > > + u64 vmalloc_shadow_start, vmalloc_shadow_end; > > > > > > phys_addr_t pa_start, pa_end; > > > > > > u64 i; > > > > > > > > > > > > @@ -223,6 +224,9 @@ static void __init kasan_init_shadow(void) > > > > > > mod_shadow_start =3D (u64)kasan_mem_to_shadow((void *)MODULES= _VADDR); > > > > > > mod_shadow_end =3D (u64)kasan_mem_to_shadow((void *)MODULES_E= ND); > > > > > > > > > > > > + vmalloc_shadow_start =3D (u64)kasan_mem_to_shadow((void *)VMA= LLOC_START); > > > > > > + vmalloc_shadow_end =3D (u64)kasan_mem_to_shadow((void *)VMALL= OC_END); > > > > > > + > > > > > > /* > > > > > > * We are going to perform proper setup of shadow memory. > > > > > > * At first we should unmap early shadow (clear_pgds() call b= elow). > > > > > > @@ -241,12 +245,21 @@ static void __init kasan_init_shadow(void= ) > > > > > > > > > > > > kasan_populate_early_shadow(kasan_mem_to_shadow((void *)PAGE_= END), > > > > > > (void *)mod_shadow_start); > > > > > > - kasan_populate_early_shadow((void *)kimg_shadow_end, > > > > > > - (void *)KASAN_SHADOW_END); > > > > > > + if (IS_ENABLED(CONFIG_KASAN_VMALLOC)) { > > > > > > > > > > Do we really need yet another CONFIG option for KASAN? What's the= use-case > > > > > for *not* enabling this if you're already enabling one of the KAS= AN > > > > > backends? > > > >commit message > > > > As I know, KASAN_VMALLOC now only supports KASAN_GENERIC and also > > > > KASAN_VMALLOC uses more memory to map real shadow memory (1/8 of vm= alloc va). > > > > > > The shadow is allocated dynamically though, isn't it? > > > > Yes, but It's still a cost. > > > > > > There should be someone can enable KASAN_GENERIC but can't use VMAL= LOC > > > > due to memory issue. > > > > > > That doesn't sound particularly realistic to me. The reason I'm pushi= ng here > > > is because I would _really_ like to move to VMAP stack unconditionall= y, and > > > that would effectively force KASAN_VMALLOC to be set if KASAN is in u= se. > > > > > > So unless there's a really good reason not to do that, please can we = make > > > this unconditional for arm64? Pretty please? > > > > I think it's fine since we have a good reason. > > Also if someone have memory issue in KASAN_VMALLOC, > > they can use SW_TAG, right? > > > > However the SW_TAG/HW_TAG is not supported VMALLOC yet. > > So the code would be like > > > > if (IS_ENABLED(CONFIG_KASAN_GENERIC)) > > Just make this CONFIG_KASAN_VMALLOC, since that depends on KASAN_GENERIC. OK, this also make sense. My first thought was that selecting KASAN_GENERIC implies VMALLOC in arm64 is a special case so this need well documented. I'll document this in the commit message of Kconfig patch to avoid messing up the code here. I'm going to send V3 patch, thanks again for your review. BRs, Lecopzer