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 91432C77B7F for ; Fri, 12 May 2023 01:57:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BF9BF6B0071; Thu, 11 May 2023 21:57:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BAA386B0074; Thu, 11 May 2023 21:57:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A98646B0075; Thu, 11 May 2023 21:57:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 9B7576B0071 for ; Thu, 11 May 2023 21:57:42 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 63FA21C7A80 for ; Fri, 12 May 2023 01:57:42 +0000 (UTC) X-FDA: 80779941564.02.BCEEF3A Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by imf10.hostedemail.com (Postfix) with ESMTP id 93737C0008 for ; Fri, 12 May 2023 01:57:38 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf10.hostedemail.com: domain of zhangqing@loongson.cn designates 114.242.206.163 as permitted sender) smtp.mailfrom=zhangqing@loongson.cn ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1683856659; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references; bh=/qcioOGpEyrK1DfayFZ1cTPTEWzfxZmJdAsv2u78Jqs=; b=8Ek+4Rv7X80GvowgcNeZvCYzoR9rYt/LqPv7zbTg/YNrX3gqHZef7ys48asBPeDLEn0qMJ helAYeUJ6sD0MHbH82xF6b7cTe9JSvUW6MJriVxy6iCEUrZTJZNI/Ufx22bPdsNW80M9Mn EPlBw4KzkVQdPBluArAaGEQXURyTGho= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1683856659; a=rsa-sha256; cv=none; b=7wAjILnrYTdx/X8nWP2/BR0hk1iBt0atJInEmkIePddqAO0AfQMEP7CMTNaD8PyEq+vItG mo3PbLxVqD8wIZCfhxaus5OY1y54XI5ACNEhLFr2PMy5+Sfgi9Tsj+HdOhRKiDH7/WTamX MfFSAaYCTjO4DQkKHq6O3Cu2oBJZqwU= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf10.hostedemail.com: domain of zhangqing@loongson.cn designates 114.242.206.163 as permitted sender) smtp.mailfrom=zhangqing@loongson.cn Received: from loongson.cn (unknown [113.200.148.30]) by gateway (Coremail) with SMTP id _____8AxGuoOnV1kP_kHAA--.13523S3; Fri, 12 May 2023 09:57:34 +0800 (CST) Received: from localhost.localdomain (unknown [113.200.148.30]) by localhost.localdomain (Coremail) with SMTP id AQAAf8DxXrMMnV1kocdWAA--.23198S2; Fri, 12 May 2023 09:57:33 +0800 (CST) From: Qing Zhang To: Andrey Ryabinin , Jonathan Corbet , Huacai Chen , Andrew Morton Cc: Alexander Potapenko , Andrey Konovalov , 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 Subject: [PATCH v3 0/4] LoongArch: Add kernel address sanitizer support Date: Fri, 12 May 2023 09:57:27 +0800 Message-Id: <20230512015731.23787-1-zhangqing@loongson.cn> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID:AQAAf8DxXrMMnV1kocdWAA--.23198S2 X-CM-SenderInfo: x2kd0wptlqwqxorr0wxvrqhubq/ X-Coremail-Antispam: 1Uk129KBjvJXoWxZFy3GrWkCr45Jw1DGryUWrg_yoW5tw1fpa 9rur95Gr4UGrnayrZ7t348ur13J3Z3Ka12qFyay395AF45Wr10vr4vkryDZF9rG3y8JFy0 q3WrGwn0gF4jya7anT9S1TB71UUUUUJqnTZGkaVYY2UrUUUUj1kv1TuYvTs0mT0YCTnIWj qI5I8CrVACY4xI64kE6c02F40Ex7xfYxn0WfASr-VFAUDa7-sFnT9fnUUIcSsGvfJTRUUU b38YFVCjjxCrM7AC8VAFwI0_Jr0_Gr1l1xkIjI8I6I8E6xAIw20EY4v20xvaj40_Wr0E3s 1l1IIY67AEw4v_JrI_Jryl8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xv wVC0I7IYx2IY67AKxVW8JVW5JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8JVWxJwA2z4 x0Y4vEx4A2jsIE14v26F4j6r4UJwA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UM2kK e7AKxVWUXVWUAwAS0I0E0xvYzxvE52x082IY62kv0487Mc804VCY07AIYIkI8VC2zVCFFI 0UMc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUXVWUAwAv7VC2z280 aVAFwI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcxkI7VAKI48JMxAIw28Icx kI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMxCIbckI1I0E14v26r1Y6r17MI8I3I0E 5I8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVW8ZV WrXwCIc40Y0x0EwIxGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY 1x0267AKxVWUJVW8JwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI 0_Jr0_Gr1lIxAIcVC2z280aVCY1x0267AKxVWUJVW8JbIYCTnIWIevJa73UjIFyTuYvjxU 2G-eUUUUU X-Stat-Signature: b1kb7nohoip9he8oybg5ju4g1b1rm5qh X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 93737C0008 X-Rspam-User: X-HE-Tag: 1683856658-233945 X-HE-Meta: U2FsdGVkX1+snZDCTWjLNMQT0+cLY5f4MI4NwwAvmEYzBZJeFM6AlRr48p94kxg/JITtEe7MyYLCTUyurFSSG4jbWH/jJVvwBld7bIWJ6GKND4wqbZeIcjGi8xbcTitOXp1B+eaf4zqhBvcWfnQaOUzN1zHe3Bb07eIz+u2Q80B6aCDpxesM0Uyi7HU97MzZq2+GRKbEkuydyaYoA7ZKSRKh50lGYcK4Bq8xERXbi0hOkeR8m2oUXn7IxgvPs2pMifYvre7lPV4b4MpQhF0V4CDVi8hBp1TgsDwVODtRQ79rVqcpQT0kNbcExk7wA1HF6i/Ova53WdJk+HQG2Vl0yuLcFFMkELVW+ePzC1meXQvln+ZmBOhqX1SFfzEgIWbf1cJBAyh0p4ymkg9XvGci65wfYDNvm0BIf1tBen0P3Z6oRWCN+bx2TIK/SbSHWx9/RWdoMEc8DI2A8H5pazqtILP2DTAzfEdHMgd2Bl39U8p61Zei/4rM3skiGuSbQPRwewKMEa7puQyS/bUH9dRo43KzTCblrgVQfDky2E4RR+GjTV5+gZniK/bDN0kUT4Vo/ozgjkz9+9thb2CLCtJAiEnXc9k/3J5rJSo6d8Bo7PPHH9UHuZQTgLKyK7nX0MrpsVm5N/Xd8osQVjgje8GrcTxHS1N4WFUsBdwezZnmgofA9cnzjx/SfJ+64r0bQ6oigK6jT+fxI0JR6FZF+bg3HS74EVuJPuNQ2S6o2Vi54i/B0wspfxG5JpTafoUTcJOzli2Eu/dQtAxr/+4dpVvJVI2/wF2ZRj3wM3W81o+p75Hcv2YZHvsuf3oYKttN19QQL0qGCgCwzZlz+URYEpP/fpP6weKuewUKwhKUJK5TUTzJ9gi8+U+5WLnEqIDFKwgKuVjj4hkE9rayI8CyW2SPatZkGKHVc6ik0X1Ce660LOYL8JmNpqMowVq1snZpV3+K9q04gBGx6Ycjehsh083 800YbzND fve4DU8YKZ+Ii0BCoA6YpamBRC0lyip3yg9gVOR3o9OHT+EqLWZ0BVY9h+Og1Bvxeswyo8GmrDfVdmwdLQ4evl+sJFU9uSRzpHm4+nHrNZix985A= 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: 1/8 of kernel addresses reserved for shadow memory. But for LoongArch, There are a lot of 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, saying (addr >> KASAN_SHADOW_SCALE_SHIFT) + KASAN_SHADOW_OFFSET So LoongArch has a arch-specific mapping formula, different segments are mapped individually, and only limited space lengths of these specific segments are mapped to shadow. At early boot stage the whole shadow region populated with just one physical page (kasan_early_shadow_page). Later, this page is reused as readonly zero shadow for some memory that kasan currently don't track. After mapping the physical memory, pages for shadow memory are allocated and mapped. Functions like memset()/memcpy()/memmove() do a lot of memory accesses. If bad pointer passed to one of these function it is important to be caught. Compiler's instrumentation cannot do this since these functions are written in assembly. KASan replaces memory functions with manually instrumented variants. Original functions declared as weak symbols so strong definitions in mm/kasan/kasan.c could replace them. Original functions have aliases with '__' prefix in names, so we could call non-instrumented variant if needed. Changes v2 -> v3: - Rebased on 6.4-rc1 - Add Makefile ``KASAN_SANITIZE`` annotation for tlb related files to adapt to multiple cores. Changes v1 -> v2: Suggested by Andrey: - Make two separate patches for changes to public files. - Removes unnecessary judgments in check_region_inline. - Add pud/pmd_init __weak define. - Add Empty function kasan_(early)_init when CONFIG_KASAN turned off. Suggested by Huacai: - Split the simplified relocation patch. Suggested by Youling: - Add ARCH_HAS_FORTIFY_SOURCE in Kconfig and split into separate patches. - update `Documentation/translations/zh_CN/dev-tools/kasan.rst`. - Use macros to avoid using magic values directly. - Modify patch sequence. - Remove redundant tab. - Modify submission information. Qing Zhang (4): kasan: Add __HAVE_ARCH_SHADOW_MAP to support arch specific mapping kasan: Add (pmd|pud)_init for LoongArch zero_(pud|p4d)_populate process LoongArch: Simplify the processing of jumping new kernel for KASLR LoongArch: Add kernel address sanitizer support Documentation/dev-tools/kasan.rst | 4 +- .../features/debug/KASAN/arch-support.txt | 2 +- .../translations/zh_CN/dev-tools/kasan.rst | 2 +- arch/loongarch/Kconfig | 7 + arch/loongarch/include/asm/kasan.h | 120 +++++++++ arch/loongarch/include/asm/pgtable.h | 7 + arch/loongarch/include/asm/setup.h | 2 +- arch/loongarch/include/asm/string.h | 20 ++ arch/loongarch/kernel/Makefile | 6 + arch/loongarch/kernel/head.S | 13 +- arch/loongarch/kernel/relocate.c | 8 +- arch/loongarch/kernel/setup.c | 4 + arch/loongarch/lib/memcpy.S | 4 +- arch/loongarch/lib/memmove.S | 16 +- arch/loongarch/lib/memset.S | 4 +- arch/loongarch/mm/Makefile | 2 + arch/loongarch/mm/kasan_init.c | 255 ++++++++++++++++++ arch/loongarch/vdso/Makefile | 4 + include/linux/kasan.h | 2 + mm/kasan/init.c | 18 +- mm/kasan/kasan.h | 6 + 21 files changed, 478 insertions(+), 28 deletions(-) create mode 100644 arch/loongarch/include/asm/kasan.h create mode 100644 arch/loongarch/mm/kasan_init.c -- 2.36.0