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 F21E5C04A94 for ; Tue, 1 Aug 2023 02:58:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7CC922800CE; Mon, 31 Jul 2023 22:58:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 77D042800C8; Mon, 31 Jul 2023 22:58:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 692692800CE; Mon, 31 Jul 2023 22:58:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 587842800C8 for ; Mon, 31 Jul 2023 22:58:52 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 207AC120420 for ; Tue, 1 Aug 2023 02:58:52 +0000 (UTC) X-FDA: 81074028504.30.8AD616C Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) by imf02.hostedemail.com (Postfix) with ESMTP id 626328001D for ; Tue, 1 Aug 2023 02:58:48 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=none; spf=pass (imf02.hostedemail.com: domain of lienze@kylinos.cn designates 124.126.103.232 as permitted sender) smtp.mailfrom=lienze@kylinos.cn; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690858730; a=rsa-sha256; cv=none; b=Kf6fo4gjKxe6wLuygNJfMMxl/aczYXeAgeWw82juhcnxEr7lGpLOXuIk1OeKhbd6AmcdFx WsNYmsXSSMmLPuOHHE3qf1MOO33RhPUjtrhUEF/PHYztOkPVuahLO8OO6wd8EVwW9cc6yF xa+T3dWy7BzkSfmLHOtdAJnNrBSTwEU= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=none; spf=pass (imf02.hostedemail.com: domain of lienze@kylinos.cn designates 124.126.103.232 as permitted sender) smtp.mailfrom=lienze@kylinos.cn; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690858730; 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=0BF3lT/0xiTOm5QquCDJySjWwvInryKlMrYrobIM5mA=; b=LybGln5A9BTEyaBGFO2nx8iPBVX+NJDwkguRr8JfE4v+X9/mP/kbI5I8ZjMZrqBq8gj2j0 x21G5v55oMC0kRDt4Khc06tBVshQKe0BIYQq6wRXyr7TC8bht8bpOyCv0U7PfNyXCtfRYE 098o4or7KA03EGzeWHPF094D5zkk/VA= X-UUID: 27a11fa6c27a40fd83e2eacc12f470c1-20230801 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.28,REQID:e37cdbcf-b500-4d46-a435-69cda3722b0a,IP:15, URL:0,TC:0,Content:-25,EDM:25,RT:0,SF:-15,FILE:0,BULK:0,RULE:Release_Ham,A CTION:release,TS:0 X-CID-INFO: VERSION:1.1.28,REQID:e37cdbcf-b500-4d46-a435-69cda3722b0a,IP:15,UR L:0,TC:0,Content:-25,EDM:25,RT:0,SF:-15,FILE:0,BULK:0,RULE:Release_Ham,ACT ION:release,TS:0 X-CID-META: VersionHash:176cd25,CLOUDID:fb48bfa0-0933-4333-8d4f-6c3c53ebd55b,B ulkID:23080110584231HYNJKY,BulkQuantity:0,Recheck:0,SF:17|19|44|38|24|102, TC:nil,Content:0,EDM:5,IP:-2,URL:0,File:nil,Bulk:nil,QS:nil,BEC:nil,COL:0, OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0 X-CID-BVR: 0 X-CID-BAS: 0,_,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD,TF_CID_SPAM_FSI X-UUID: 27a11fa6c27a40fd83e2eacc12f470c1-20230801 X-User: lienze@kylinos.cn Received: from ubuntu.. [(39.156.73.12)] by mailgw (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 769058494; Tue, 01 Aug 2023 10:58:41 +0800 From: Enze Li To: chenhuacai@kernel.org, kernel@xen0n.name, loongarch@lists.linux.dev, glider@google.com, elver@google.com, akpm@linux-foundation.org, kasan-dev@googlegroups.com, linux-mm@kvack.org Cc: zhangqing@loongson.cn, yangtiezhu@loongson.cn, dvyukov@google.com, Enze Li Subject: [PATCH 0/4 v3] Add KFENCE support for LoongArch Date: Tue, 1 Aug 2023 10:58:11 +0800 Message-Id: <20230801025815.2436293-1-lienze@kylinos.cn> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 626328001D X-Stat-Signature: czr3cckhdmgopb6thqnun5gcyqtcg3ib X-HE-Tag: 1690858728-360848 X-HE-Meta: U2FsdGVkX1885xnNHQGEu7lge2tNVCv+0iQiewDBDPbGOjozybdDrsIdB345KUToi8k86Rs8dOmvdBCF0mwVH1eOx/0zZB5BlUTlzIEOWu9cfXI2vJw3mXgx3NHuSXzCaWChoj5IjeKbivWVrbtasCzwKp0p/QRqOsTLUTfs8Hyzh5GbQ9FkzKE10X3FXD7bFYMQJIZ3qluoHKW/o6W32ao5RSiehJfDr9Fq5xtzlAs6tC++aSM9RvqJcaZew+d/0UV0W7j+0iis7ND0HW5+JOxd6t+QcCQptzQ4BKEWhRAJM+y0pSk2qqeSku8+Sw2DYfJUN9cpuIgIebo0bF8gb5MUwmia5ZUaUCeynxW3TlQd9m1aC4GR3QHVepsMooGNMTHpHzl83q2Wv+wxS0nJfw6xAu83fhozu5vtSHW0ztQFq4VEEXXMtcBZ9hp1hoA0za/VKCdl6gzRy29rjBhLG7iNK+mOJg2RpsVb4DGIcTkEU4y2B/YNtASFPFtvO1FwbxP+d+d06QO51+h+UF2RypL/vMc8croyQiYLXHaI/0/28fn+nF1IN+XQiZ+/1WDChj2zRUNyjW6rqiNm9CEB+NVjwTyCOpWzCEiBQobIpIU68yT1SH/eGVH8Q65ZrAKlHxKgdbMG5AuAafoTBwboqcoOnHNS+gyjF+5a2n3lr1vPGrHGY1520pNG5u8PV0+9HRjkwTy3x2AgCn3ctkOR9G0jNgYoqwO3N/s1ukBacdVcWLgyqO5EOEGbj23z76otVm0XKh+fX3CcnGUi+/0gHRjZCFf9YXZaZq5/jBrVK5uWfSp0NuATugYMO/ps5ydhV/F8UYuE/t69wVfvV/SQb59cFJOxD8kXtTesiMrJCa6mj64IKtEhTAmvrLO64UXL6oWBEyPEfK00ZanD/qJzMjsusyeUB5NuiMghm9Au1uasdIhX003tZGq3+29uJQxxrsTxiL/n5ZoSBO/LZus IlUYd5/5 7Jy/AVgN9dJjMN/z1U7R8Y3OX89ZR7GnmoAC5 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: Hi all, This patchset adds KFENCE support on LoongArch. To run the testcases, you will need to enable the following options, -> Kernel hacking [*] Tracers [*] Support for tracing block IO actions (NEW) -> Kernel Testing and Coverage <*> KUnit - Enable support for unit tests and then, -> Kernel hacking -> Memory Debugging [*] KFENCE: low-overhead sampling-based memory safety error detector (NEW) <*> KFENCE integration test suite (NEW) With these options enabled, KFENCE will be tested during kernel startup. And normally, you might get the following feedback, ======================================================== [ 35.326363 ] # kfence: pass:23 fail:0 skip:2 total:25 [ 35.326486 ] # Totals: pass:23 fail:0 skip:2 total:25 [ 35.326621 ] ok 1 kfence ======================================================== you might notice that 2 testcases have been skipped. If you tend to run all testcases, please enable CONFIG_INIT_ON_FREE_DEFAULT_ON, you can find it here, -> Security options -> Kernel hardening options -> Memory initialization [*] Enable heap memory zeroing on free by default and you might get all testcases passed. ======================================================== [ 35.531860 ] # kfence: pass:25 fail:0 skip:0 total:25 [ 35.531999 ] # Totals: pass:25 fail:0 skip:0 total:25 [ 35.532135 ] ok 1 kfence ======================================================== v3: * Address Huacai's comments. * Fix a bug that Jackie Liu pointed out. * Rewrite arch_stack_walk() with the suggestion of Jinyang He. v2: * Address Huacai's comments. * Fix typos in commit message. Thanks, Enze Enze Li (4): KFENCE: Defer the assignment of the local variable addr LoongArch: mm: Add page table mapped mode support LoongArch: Get stack without NMI when providing regs parameter LoongArch: Add KFENCE support arch/loongarch/Kconfig | 1 + arch/loongarch/include/asm/kfence.h | 66 ++++++++++++++++++++++++++++ arch/loongarch/include/asm/page.h | 8 +++- arch/loongarch/include/asm/pgtable.h | 16 ++++++- arch/loongarch/kernel/stacktrace.c | 18 ++++---- arch/loongarch/mm/fault.c | 22 ++++++---- arch/loongarch/mm/pgtable.c | 7 +++ mm/kfence/core.c | 5 ++- 8 files changed, 123 insertions(+), 20 deletions(-) create mode 100644 arch/loongarch/include/asm/kfence.h -- 2.34.1