Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp6577551rwl; Tue, 4 Apr 2023 15:18:34 -0700 (PDT) X-Google-Smtp-Source: AKy350YEsb4/Nw2LIAjaF55PpEPbedAGI5Bx4GmYwo7JMJNmWvZXeMtVxu6j58/Sdk4lDMEXvt/Q X-Received: by 2002:a17:907:20b7:b0:947:630b:35f9 with SMTP id pw23-20020a17090720b700b00947630b35f9mr836077ejb.74.1680646713764; Tue, 04 Apr 2023 15:18:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680646713; cv=none; d=google.com; s=arc-20160816; b=hGDcFyXPRUlaiO8vEyC3ix840q3BTihbcbW2k7xdnBhI4g4kVvXgiEbGcpFbqU0a7r y0DosVSzxMT19UgDMI1iw2WrM98DjddfsEM1y17viOZ54H+rmYV8sUmoLP/X76Wzc4qH nvdYLchdnSbharADCZsEW156+whPhs7kxVETe+IxkbnkOfUHqWvFEayK1w8kK9NEr76l FaBNwXyeFd6N7DOrMmbV9euXJVzYsdw72Cl1IfEE933ufO+qRZ5iBL7jiCWJ+XuCPN9J LYw25CTRFNjhO3hxZglSduhdXpLmddbWdFoaalSvT0SdroWQmyoPrVJZUwjgifrzJ+CJ Q9BQ== 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=FhW41Lz+Mez52y9+7Sqb35hmOmVdAZ3fg2uw11nAPAE=; b=jGTe0jPG/ArONDa/k+vlrsBefMU/kobv4uHgkTgUelZVTKPyjIMKrgLudRnxVWtp4n QopoHe1WRybPVEgVYBy8zSHK1q4NNXDtDvkXnUwHIW4KVbPp/6LcM383Km5qaPRAvAj5 h4auwnWi0aNn7lIvs+5Y60w2xIUL8F6EhxEQGcg9KTXp04vbZ8i8RHrwmYbVJE+narIV JmpMT3h2KEQwha0IoZlgbqojF5Bkt1EaSnCiaXL+55mJ8cCmoqTdWNK7Ql1+yqGgVPvh dmPFW9VC1jRS4iy+oWMl4AlX1bu8KftWYDvXszlhrMKslqPntpQnmsXSOapo1bTMG4BP owvw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=gUnEta5Y; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x18-20020a170906149200b0093626311338si6923608ejc.936.2023.04.04.15.18.07; Tue, 04 Apr 2023 15:18:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=gUnEta5Y; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S236359AbjDDWJy (ORCPT + 99 others); Tue, 4 Apr 2023 18:09:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44584 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236581AbjDDWJw (ORCPT ); Tue, 4 Apr 2023 18:09:52 -0400 Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 42963421F; Tue, 4 Apr 2023 15:09:50 -0700 (PDT) Received: by mail-pj1-x1032.google.com with SMTP id j13so32066920pjd.1; Tue, 04 Apr 2023 15:09:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680646190; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=FhW41Lz+Mez52y9+7Sqb35hmOmVdAZ3fg2uw11nAPAE=; b=gUnEta5Yb6BtuCcTbAobNapAGPwc0djL/m8TaRV6zg1dmzIbN9ViSxcJdaPoUxzS4b lqAg8chb72IJSS+FDlhtOK8Q6TNt1dX6HhF5uUTVwsIiKbA7yXZaggFVpSNKPB/kpfG5 UGE6OA1h2UEWP7hBlWDMJIm6VAA88W4h5iUein/TQ4pBlGSVHPr+4gtWEGZz1NccX+1O pzrByG745s8cPaG1Bv9BjxgAeCG+TOnfx7Zf8ZthRcuoQ7uY/PzreoHfTKIwH39L6NMf +ihHktT0J0n+iD3LRnqvnglDvtpJ0jraXnTyclvvFj3bOpjrIKalZFNddiclc0ueDpSP hxZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680646190; h=content-transfer-encoding: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=FhW41Lz+Mez52y9+7Sqb35hmOmVdAZ3fg2uw11nAPAE=; b=CrGrfHtBlvOjjTF4xStir0n6IHEnpwk3c3p5eO2cvlgiQBpqqsEyjqfDBMM3joe5qG wRZopbF0XAfy0CnoEAghgb+GkQ3ZRkk2bor9fCvOCYfhdAWAso+xFNX1nU29fbt9IA5+ nKxWq5kCGr6inhS1j9pJrybfQwtwYqOO0LucM2SkCTFEg/Mnedk0YoXhQtR62FmH/D4f U+89JyTOkp1mdXLBAxMKPP8x2AInWn3BANFPxu7g00JJV0fRiAZtwR6kvzNELpQqdifj v5sOZ0obEfKV62ewg+7YvBUw/1fdQ74J8jtksoeCmu5I81OHtmtdwmbxF2I4p1mGfZ4L jC1Q== X-Gm-Message-State: AAQBX9dY5SJI6FRkol+3Rv5sY3RsdJDF7XBcvF9TqKOr51m220K4M4XH aEJOX7WDa8AhcjNP8G5me1EKYZ9diAyeVLtwZrY= X-Received: by 2002:a17:90b:e09:b0:240:228:95bd with SMTP id ge9-20020a17090b0e0900b00240022895bdmr1533929pjb.5.1680646189645; Tue, 04 Apr 2023 15:09:49 -0700 (PDT) MIME-Version: 1.0 References: <20230404084308.813-1-zhangqing@loongson.cn> In-Reply-To: <20230404084308.813-1-zhangqing@loongson.cn> From: Andrey Konovalov Date: Wed, 5 Apr 2023 00:09:38 +0200 Message-ID: Subject: Re: [PATCH v2 4/6] kasan: Add __HAVE_ARCH_SHADOW_MAP to support arch specific mapping To: Qing Zhang Cc: Andrey Ryabinin , 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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Apr 4, 2023 at 10:43=E2=80=AFAM Qing Zhang = wrote: > > Like the LoongArch, which has many holes between different segments > and valid address space(256T available) is insufficient to map all > these segments to kasan shadow memory with the common formula provided > by kasan core, We need architecture specific mapping formula,different > segments are mapped individually, and only limited length of space of > that specific segment is mapped to shadow. > > Therefore, when the incoming address is converted to a shadow, we need > to add a condition to determine whether it is valid. > > Signed-off-by: Qing Zhang > --- > include/linux/kasan.h | 2 ++ > mm/kasan/kasan.h | 6 ++++++ > 2 files changed, 8 insertions(+) > > 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/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) !=3D NULL); > +#else > return (kasan_reset_tag(addr) >=3D > kasan_shadow_to_mem((void *)KASAN_SHADOW_START)); > +#endif > } > > /** > -- > 2.20.1 > Reviewed-by: Andrey Konovalov Thanks!