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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 65C72C761AF for ; Wed, 29 Mar 2023 19:02:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D93666B0080; Wed, 29 Mar 2023 15:02:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D43866B0081; Wed, 29 Mar 2023 15:02:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C32A36B0082; Wed, 29 Mar 2023 15:02:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id AF9F56B0080 for ; Wed, 29 Mar 2023 15:02:53 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 413AFA07A3 for ; Wed, 29 Mar 2023 19:02:53 +0000 (UTC) X-FDA: 80622857826.17.06B3E1B Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) by imf04.hostedemail.com (Postfix) with ESMTP id 6FEA440005 for ; Wed, 29 Mar 2023 19:02:51 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="U//sM9A7"; spf=pass (imf04.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.216.49 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1680116571; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=rysh7R9x0DwpV/wCJCeDcK+KSngeOrcjw+kFGG6R2os=; b=7TwTkotDaJ0XJS0cMqwCF73gIrp7R6o+c2Mu4Tsr+IjPFQz9OP5BdldxzJDiHKcG/CPrCE Z/V3GwOUXJbJPn/QEDfdPkBcuj1h8UzCF5ZAS6SpIuL7b2XVtxcLv/DgDySmgvxHr8Z9WH v657dUNu3eR2VTi3nm2CDyzRcfkRpOI= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="U//sM9A7"; spf=pass (imf04.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.216.49 as permitted sender) smtp.mailfrom=andreyknvl@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680116571; a=rsa-sha256; cv=none; b=lqY20jVcVekvSpvqIBQNyLmLWfxjNlL90EJFe2Qu/kkm9w04UoKLc03Aam5KPlV834vj4Z popnclup5Pd4tmpZRu4U9agrC2mzhVvXUZ/wPwUJJ+minV8fOU+c+Ez25zq2kb2LeVmGrS /YKJkAhE2o+ukqXedwliTgvgVJo6Ueo= Received: by mail-pj1-f49.google.com with SMTP id l9-20020a17090a3f0900b0023d32684e7fso4405922pjc.1 for ; Wed, 29 Mar 2023 12:02:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680116570; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=rysh7R9x0DwpV/wCJCeDcK+KSngeOrcjw+kFGG6R2os=; b=U//sM9A7XL/kcpEYXKup4m2J/Sp3DBWPcq+cj4HsJc7+dUi9AsjU02Lwq3JoL1NQmq ismSymj4IoQJ4VYIXTTfXj4IhuTC9V8imTeRJJl8wtp+cLMVycZbZpe5adelriSCB34Z 5JRPjQUp4XUV1p1ZJpj8FcgAadV1Nt3xAimI5KHOUF00ILkLWslBnB0DEXYGfhDpjDhs aIvCu/RV/2Kg07dVMVnAXRKweMCcgh7xxmTEuGKD2hPrODR6SjG1EW0qSYoJJ5V2d+iM usSHbr1+aiPi29yP82LVwaPfhD1cK7k46uCFb9ZLK21U4JbQEzxGF/pBiIfUsLTD3aFK EHOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680116570; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=rysh7R9x0DwpV/wCJCeDcK+KSngeOrcjw+kFGG6R2os=; b=QPjAt+KI4Cramqq8iKMlVt8WOoG8Qm96qlNyJOkZtvnLAsA5GTkmIe5hZC+018fEyd Okb7CdzRDNt3CCs5FPoZVR6eP1EvkCuljRs/V8UGQF/qsmSOwBuaH3Tl8+Ecr7KF76wC vyQ+dgY6q3XBsHvvp7aavtDqIwpBuUp4JYO1V9pmvFq9kx1jA8VNj9lfguobnqvarS+u C3GMiq+s6bzIy3RyLubDuOhikwaglz6eTcVoLdYUKd4rnVzlZoSoEU7ZCPN6o9whlVOx DtCBet2My6zUfr2JUvUweKnae5B2yx9untjYPyoeUz7R8CYCxcXUcneGpKNDsBcEJ8eY nkmg== X-Gm-Message-State: AAQBX9cXI9prbXpvsi3zfkBqQy7B+8qats0I7BVcGXbcakNLs89XZaZZ SwIQ+6L4ODaYYQBvtTteXRiqrtcTg2h+9/l35L0= X-Google-Smtp-Source: AKy350a8ZyVGR+YsV1iqviDdiXUJrnHDdWNYLxQJ15oR6ir8sjH7TDn0yq8OS/FxjL5RmpSszu69Red3FULJ3Z/k/d4= X-Received: by 2002:a17:902:c213:b0:199:49d7:cead with SMTP id 19-20020a170902c21300b0019949d7ceadmr7378827pll.11.1680116570333; Wed, 29 Mar 2023 12:02:50 -0700 (PDT) MIME-Version: 1.0 References: <20230328111714.2056-1-zhangqing@loongson.cn> In-Reply-To: <20230328111714.2056-1-zhangqing@loongson.cn> From: Andrey Konovalov Date: Wed, 29 Mar 2023 21:02:39 +0200 Message-ID: Subject: Re: [PATCH] LoongArch: Add kernel address sanitizer support To: Qing Zhang Cc: Jonathan Corbet , Huacai Chen , Andrew Morton , Alexander Potapenko , Dmitry Vyukov , Vincenzo Frascino , WANG Xuerui , Jiaxun Yang , kasan-dev@googlegroups.com, linux-doc@vger.kernel.org, linux-mm@kvack.org, loongarch@lists.linux.dev, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Andrey Ryabinin Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 6FEA440005 X-Stat-Signature: zn9k88irxbdwobuqrj55qzk65r54f78p X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1680116571-668980 X-HE-Meta: U2FsdGVkX1+N+2/zwcG+/kL8D3oUFsCUnzW3fPJPJEz7fDjaDqWj79Zm5McjAqYJKma1yVmSeA3Rhb0ajpZKcm21o/lfB6hcfrhZNLumyhJfuh6a01xb3uDkevU/HSKFTESRkB6FB+dn5WT+pYyzUAYhSXontuu8QFtuULjONevC7lg91oIVhENul3nYtbAUd/z2AEhh/q2PVPuDWNVpZxZRzaFVVHu18VDIFa/2YYBVg6nafl2I7vPoYeqKHwxHPQoTE3+H0N+vr5ghnc9ZebDRHIP55ihbqcRuxEhHQ5Oad/gVceSboGJ90k5CUsdEFIfWXpBPKGgL/d9OEI7evQnQ5e03UovJZOm38upVlgbp2C2mKsqISf+DDItMTBPRJTAbeaBiQmWA5KWGVRcr4RbjwcKDrRn5koXUKaExI1mOUHY2o/L2L2/3T3yTuvI7rfOw9+p5zmUsC6pI5iJTOLr2hdDD5mfhVmL/blcZ4eUUXEcnjUlOAroIXTfMR/jg1FLE7al0k3p3myHwAYW6pgVcXwnth+flSOXZgMTXOSWXTjDUjhmd6Aj/IVKgolgjPyWv3SETq+jfkL0EHW3t1Hy+bo+vkVlBK5xIhVXUGFH/EwkmBfa3aAD3aaWKR93QWHAFh53MF0Kpqy1gGbSrCq/GyOS0qj7ATzq1eWt31EbY9K5JCJKpwvcI7Ngc/JSJkNzzojZtmgqf6ctZKlJ9bs4MQhle06yrAuGoVGFYpaLD/Tnd5uoy7sT/nNxHVPys0N+PyYhrPqSz3zgSGxc9orkHKMAk38Kx3WTaPkjIGpsnfZaARsnp0wmPKji67DPbLkJGhmU+n/YnDaMfRc91G8PlSJicFWr8KguZDwhK3DumfcPbL2wv7xKuXlIU+92Ij0ozLG+ryS1uKiCF7gHuyDeX8v2u0R4+rfd/aIKz/MRjI6xHaifLV9/Wa5hHZzOC9x/WsGT1sSyxGYpzO/G Xp8wab67 g01iYA/Y+X0dWqDuAOpYWtwjP8X7WPq6XowGUxqj6FLfXE1xRLht6JYaR4WxhHLn0bDcE4Z8S09DipcXXf9vqnEvOsC0W2rDY+AEqc/6J5hseysiqCxaV0Bt3dCmh8Q9uWInDjnwTloeB8FBJQcqP6n75XfTyGyRc6h2CUiVswMChfpqvBm5bpydWgdRZdnmQnYnDBuVZCVekmcDsW+2psWwkMFid/uP8BCf4NWs/M2XXInGvr+s4Prmgq3mfTjbwHs3vl3Lef0+gJIk3miub3qlxbM0WDm9wCWDB3yZXe+qyJut4hH/pg2ZpJVwKjh6QWTAHkYXFyFbbK6Xeq5GzhPgu0A/+NXwrpjXWHz98wdPtfv6A0mpJXT/0VRdpm1uCC1TPNJPsurMJeKbKpWZWZ0Vv6tX2xeGaOBzeQ7m/7Nnh6EbQEKAJuuJhSgR8mkIRH24t X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: > diff --git a/include/linux/kasan.h b/include/linux/kasan.h > index f7ef70661ce2..3b91b941873d 100644 > --- a/include/linux/kasan.h > +++ b/include/linux/kasan.h > @@ -54,11 +54,13 @@ extern p4d_t kasan_early_shadow_p4d[MAX_PTRS_PER_P4D]; > int kasan_populate_early_shadow(const void *shadow_start, > const void *shadow_end); > > +#ifndef __HAVE_ARCH_SHADOW_MAP > static inline void *kasan_mem_to_shadow(const void *addr) > { > return (void *)((unsigned long)addr >> KASAN_SHADOW_SCALE_SHIFT) > + KASAN_SHADOW_OFFSET; > } > +#endif > > int kasan_add_zero_shadow(void *start, unsigned long size); > void kasan_remove_zero_shadow(void *start, unsigned long size); > diff --git a/mm/kasan/generic.c b/mm/kasan/generic.c > index e5eef670735e..f86194750df5 100644 > --- a/mm/kasan/generic.c > +++ b/mm/kasan/generic.c > @@ -175,6 +175,11 @@ static __always_inline bool check_region_inline(unsigned long addr, > if (unlikely(!addr_has_metadata((void *)addr))) > return !kasan_report(addr, size, write, ret_ip); > > +#ifndef __HAVE_ARCH_SHADOW_MAP > + if (unlikely(kasan_mem_to_shadow((unsigned long *)addr) == NULL)) > + return !kasan_report(addr, size, write, ret_ip); > +#endif This should have been ifdef, right? But I don't think you need this check here at all: addr_has_metadata already checks that shadow exists. > + > if (likely(!memory_is_poisoned(addr, size))) > return true; > > diff --git a/mm/kasan/init.c b/mm/kasan/init.c > index cc64ed6858c6..860061a22ca9 100644 > --- a/mm/kasan/init.c > +++ b/mm/kasan/init.c > @@ -166,8 +166,9 @@ static int __ref zero_pud_populate(p4d_t *p4d, unsigned long addr, > if (!p) > return -ENOMEM; > } else { > - pud_populate(&init_mm, pud, > - early_alloc(PAGE_SIZE, NUMA_NO_NODE)); > + p = early_alloc(PAGE_SIZE, NUMA_NO_NODE); > + pmd_init(p); > + pud_populate(&init_mm, pud, p); > } > } > zero_pmd_populate(pud, addr, next); > @@ -207,8 +208,9 @@ static int __ref zero_p4d_populate(pgd_t *pgd, unsigned long addr, > if (!p) > return -ENOMEM; > } else { > - p4d_populate(&init_mm, p4d, > - early_alloc(PAGE_SIZE, NUMA_NO_NODE)); > + p = early_alloc(PAGE_SIZE, NUMA_NO_NODE); > + pud_init(p); > + p4d_populate(&init_mm, p4d, p); Please explain why these changes are needed in the patch description. > } > } > zero_pud_populate(p4d, addr, next); > diff --git a/mm/kasan/kasan.h b/mm/kasan/kasan.h > index a61eeee3095a..033335c13b25 100644 > --- a/mm/kasan/kasan.h > +++ b/mm/kasan/kasan.h > @@ -291,16 +291,22 @@ struct kasan_stack_ring { > > #if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS) > > +#ifndef __HAVE_ARCH_SHADOW_MAP > static inline const void *kasan_shadow_to_mem(const void *shadow_addr) > { > return (void *)(((unsigned long)shadow_addr - KASAN_SHADOW_OFFSET) > << KASAN_SHADOW_SCALE_SHIFT); > } > +#endif > > static __always_inline bool addr_has_metadata(const void *addr) > { > +#ifdef __HAVE_ARCH_SHADOW_MAP > + return (kasan_mem_to_shadow((void *)addr) != NULL); > +#else > return (kasan_reset_tag(addr) >= > kasan_shadow_to_mem((void *)KASAN_SHADOW_START)); > +#endif > } > > /** > -- > 2.20.1 >