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 AECD4C6FD1D for ; Tue, 4 Apr 2023 22:09:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DF2D26B0074; Tue, 4 Apr 2023 18:09:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DA2E16B0075; Tue, 4 Apr 2023 18:09:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C6B306B0078; Tue, 4 Apr 2023 18:09:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id B94D46B0074 for ; Tue, 4 Apr 2023 18:09:52 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 9225B140E90 for ; Tue, 4 Apr 2023 22:09:52 +0000 (UTC) X-FDA: 80645101824.23.901E867 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) by imf09.hostedemail.com (Postfix) with ESMTP id C5CDC140010 for ; Tue, 4 Apr 2023 22:09:50 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=gUnEta5Y; spf=pass (imf09.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.216.44 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=1680646190; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=FhW41Lz+Mez52y9+7Sqb35hmOmVdAZ3fg2uw11nAPAE=; b=hXhdXI/u6Ekz6aXyFpQW5b/a/+jR570hqKiENRH3AYU/wS4iWYRb9OsknkPH8kJtzJqzDB Rs+NBNdTb4UGFtlIoBtYRjkQgshl0dL9Ei8jnXvfHrJZuX7UoYiRBhlqoQfYryU4vROCu2 AbwzfylvaN/6BKdEgJIfAo4TncPl2WQ= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=gUnEta5Y; spf=pass (imf09.hostedemail.com: domain of andreyknvl@gmail.com designates 209.85.216.44 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=1680646190; a=rsa-sha256; cv=none; b=wHgngnF2JfwCNOGi+3F+0i/JAUG5LMNmpdDQjZfmd9lCOWW+QERtcfb8qwpe8XV75T5GcQ ZSWbAktfNVRej6FtooGY+mk5Je0Yn8S2clZBMjEnNfOvPEijU3i9+s0tOXdsYm71uzaTcW 2oqXxLTwADCE0Akt1W8Em0xGvdwoytw= Received: by mail-pj1-f44.google.com with SMTP id gp15-20020a17090adf0f00b0023d1bbd9f9eso37674508pjb.0 for ; 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=bNhDB+2k7LLeClVJEMsIH0ok7wqimfnqiyiyW7IXV12TGh8Q9eu1jy5tHZ/rCtPu+k UX+Y7u/zr5hv1QvLlplJAoZcyYO5lo0ovqYJLGcbbNUEFZ4E/ympacmTEjQkx8HM/DYK sKOuwEQoSl+YUpaXGyE37qhzN8mBqjA13QCGGu4Kb5pgF0/4Ue3IuRFB4GPQ0QVipgF6 gKvq+xYtIuQKPOju0BXyFxyj0esl+0Gku8/NSn+bwK3gg6hTFgDZAsvEwBF6s3UYyQck Auo3Qq5TGJlD8sUWiHNSuTb6DoGZVWCjsXk2peZmdQA2Cd9/SCwc1CqeKfv/jP05UNjX /TaA== X-Gm-Message-State: AAQBX9cuX39Bpi9Ek8gfKc1m5Lp0S8lwlZ0gJfq0g/SmsVfRfJBlzQrw R/Omr9HzMgfGzp/vZNNushbvDdgzjjd6TN1M5Kc= X-Google-Smtp-Source: AKy350bBMyaLkYHcsUf3JTXKneddX4ZVx0+3AX9RSmsTAdcXvoVPs11LPU8Ekd9MaEE01X2e0f3RDUQs/sOmoWXiTBE= 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-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: C5CDC140010 X-Stat-Signature: 8u35wtdqhxzoun4t6z3ot1spn3nox93r X-HE-Tag: 1680646190-693888 X-HE-Meta: U2FsdGVkX1/QnSR2rKuN1TuzYNR3zSRwIcBOL80Km6W+q/cn05TgvD7obCc6L5M7CWton9bC2V/OZW/D6F/F4ZuIYMNroVclN/+DNIyc2EN1Id89GC9BzFyir11bY/vHZRMr3RpVXEIcrb897NLnAydBhTUdQii1DwdKH8BtUKrVciBrz9rPdJbuvbeYsW81qqO1gchfEt7c3CSAFKQC6gtQQswEntIk8KguayQ9sijlzIFBpirBvgB5abncW+qfw9rbBSCoRZG+jIThRmY5RTC9yc/yz960cLcLxosJr3PWYXUH73ti6CGI+UIP05Wyew2R16+uP5OOhON8opMTc1GDS5EvDyYgkhS4rPdnjXKdWrPC2nUmT7vJhauQM/mTO5yPkddtXJfC/YKzZ/UAE33BgrpKLziOsHlWQD/KHmkQN2vmvkU50Y3YPR2Xjt/Hl0IclHoupTjRiKu1Rbj8Agy0CfwL5wJdB6al7CQB0tkyHgTdffydbnMnQ26sBmQQbEiwk/EqLP9O60ubzmc3PM44iDgwPNy3vLk+2joECejm80ZAhX9MlJZXoqg3y90qiQHEDEE/cbiwtexAdPbkxeOL5xlTz5VRwCV8IdffFKFQ6aUQweQ+4CRHw2OOn4RDbMIbdRyhotk1KFcTT69We9ZqdAqyZwKdUpz5QTG7ZsR1ZM3Bh7GMm6xheAO8oLWuQIVZz4iChwW6+hhffxIDcUFLVdfb/1BvLbpO/6j3abPzYHGc+LPrbIWgClciwVivgTlKBFQwIz4zIlmwh5EOkQYkr8Crur7hxfttBwP62W8340Fw9Ygiajn7grI6Lck6fNL5v8WsCbirXmabefrINdzU2+PAwttUOxMMWMlf/jfzrXhDgy3ewita71sMhTbtu1Q9EZSmHMrJmyHdJ7hp0ELBSK911ZqD+XdEWsT8BMYdJdHNsmdoLn6AYwFeG/mw7hPMJEQWHwqw41sMAto aW1cyVau kKhtMNBT/aCAEZVYea4qzUdDNQYyJnv5o2GcgsOS5q3MjShYvYKzHFubuEWGpKj4GOUiXqYk22/FHk8+G+Up2ibktpSrotR+hNi6L6UkLpR/jSS1MTUIUhUv7bKT/6I1fh4xbFO2yCLePc47wCz8vmWglUwmFaDLYmmlxBc5/cxeytptT8nk1y9E7/6W2lx79LlFGaSJyXLzQ0tf1QEYx8LUhmr50Ti+juurPJXvdJ0Qn3mB3c/UejPxBHffZhAQH8Z/l2t1Rq/YYU/lzqmlQnAGHJtkVzH0clRnsoiCwvRi7STFQWrn6WuR6stWgWqWnvUgYV9tofENPxPZFQIo9YRYGKY8FgfdOdiDP7ZE6PHB+uW2izMV/AIra+ipZWX61615KH/MJWAMn/5iYWnICRTM8FpUKyT5E90wQPmwfo3ZwhoLIfBpRp4um199zyit+lm+1Uqq8DAZ3O6V0ojDZ8GQii0WW21AH2tZsjMWKBI0tOfjh/GPbGPhSRsQm6lg4CKvW 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: 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!