From patchwork Tue Jul 25 06:14:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Enze Li X-Patchwork-Id: 13325909 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 790A4C001DF for ; Tue, 25 Jul 2023 06:15:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E8C196B007D; Tue, 25 Jul 2023 02:15:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E3EFE6B007E; Tue, 25 Jul 2023 02:15:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D03768E0003; Tue, 25 Jul 2023 02:15:25 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id BE8686B007D for ; Tue, 25 Jul 2023 02:15:25 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 7CF1F40D1B for ; Tue, 25 Jul 2023 06:15:25 +0000 (UTC) X-FDA: 81049122210.20.9D1CD55 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) by imf26.hostedemail.com (Postfix) with ESMTP id 15A57140015 for ; Tue, 25 Jul 2023 06:15:22 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=none; spf=pass (imf26.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=1690265723; a=rsa-sha256; cv=none; b=zIXSeXxaG0zp5SzcKRoUPCqT0UJ2ZVXZs9L52I/ceVMmeOHIDHxbTfjd7bJkE337VhScnz GnydaQjaGhx+p2l1oLKNsnoex1UgfjiaZu1VQ7cxmLzIcFeUa31DPpF/qt5ZTu7sr49egg NJSk/ON8xDvpKVPMfo/h0nTX9IoBU3A= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=none; spf=pass (imf26.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=1690265723; 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=mOOVW6S6bs9Y+rDFTcpMRgwg/78teBVmrkMNgmzjB3c=; b=m19TSYy3gfMh4sg8YGi2HefxNRo4mhrBH40RCnUTkyzGuubqCjxuHH1DJpQePpNAZWblBP rXjJE5tGTpDhxrjUQp/ehpq5rz1qoo9gmKtSchC0k4T9drK++QAc/l5NGv2WayGl7QNR27 sYbQmMTEDy76l3kt0vFfTvrjf/Pk6cc= X-UUID: dfbab49fd60a4e0dabc0f21bb2a2da4c-20230725 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.28,REQID:3a22af29-da51-4ad3-87f2-7eee7ef58c26,IP:15, URL:0,TC:0,Content:-25,EDM:0,RT:0,SF:-15,FILE:0,BULK:0,RULE:Release_Ham,AC TION:release,TS:-25 X-CID-INFO: VERSION:1.1.28,REQID:3a22af29-da51-4ad3-87f2-7eee7ef58c26,IP:15,UR L:0,TC:0,Content:-25,EDM:0,RT:0,SF:-15,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:-25 X-CID-META: VersionHash:176cd25,CLOUDID:1c3b7fa0-0933-4333-8d4f-6c3c53ebd55b,B ulkID:230725141513XFGXOQYJ,BulkQuantity:0,Recheck:0,SF:24|17|19|44|38|102, TC:nil,Content:0,EDM:-3,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: dfbab49fd60a4e0dabc0f21bb2a2da4c-20230725 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 69104657; Tue, 25 Jul 2023 14:15:11 +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 v2] Add KFENCE support for LoongArch Date: Tue, 25 Jul 2023 14:14:47 +0800 Message-Id: <20230725061451.1231480-1-lienze@kylinos.cn> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 15A57140015 X-Stat-Signature: 5fu1aa7w1x9zww1xdgdhyk4hxyu44dpu X-HE-Tag: 1690265722-849337 X-HE-Meta: U2FsdGVkX19K3F6tV2LItZd3lB9k6okuzLdNq7kl1BJ4RmA+XlOXcUDJSvAl03GhKKZbyR5hzD7pbrNUbD8FlNL8zW6grg3Fb2f9wRMYMTeENawbcUOSk0Xh5ROqDLEv8HYXEQ/nfaES0fg1iYts+Gt7uRwSWguiHfzFVzsUyUWbShGncaHl1sLUjQej5vniNfKZTB6pW75plzOtett0bUdqW3rS574tOod84SjP3yDFCE1XbzpTKPvZ+N3hxX9B24Ie2hPBiEMDvuckQJHo9Lt9mCz8nmwts2UJLfIaUB1xLAjQ47pVOkJg2Q4uf7mUIIwSH/G4v2X9kJOlkgPxTJaM3g9Mc3HBMfmQr50ttwgMvxgHOnVA8GqZhcxA08phmiQZoLzh15ielAh2eL8eFhPt4f0QaivIHee0iHaXZX+MydAaW7VXWAUujuDoN4CP2RAV66Lbhvaz2zPEei841FxefQfzOOEQfWCil3pfAzt/sGAWxkO8NnGoAsH4CuBc6rn2TYz6bG7A4x6XeY/FPf+R2op+7pyF4ScCABXhTsoIkB+5oUEw/y0zZWO/nJNeb6qso3iapiDhAIl/c76xLUFvAEgvF4sq1ykTgj8Q2C8yeWijb+iPhiGTQl0yyc1Cv+CLeGR0obmzx23UFGcFjasmw/IKrG0Y89dcbDmhmPn0K2QAUyeRO6RDGV5GpGg+ZkiWc+fF/Py9cXunGVdikd8pu1LOX1MzUCS35QObBkOr2Id614RBoa0ytuoi9x+rBYFQoWM3gNqLXUSXnQxm7HNJwKXbp87Yn8MiL0PpX1+WkTv0b7UTOe1OYTBH0edmt7SXAoH7wAa8yXcjQjCwNqJ1Ffg1Ri/vaAHwqaoSd41tzTbQbSkwhEPDiPHX0M3p1FQApZx97rlmJP5I9JPRV4wHgoR5PQiLoGDBKh6VrYiMvEwG1l4YmLjCMX/FCJ3OFiNgL/6M0gud2Qbhv2S NaCXHJEt mRv+VugHB14MDmCCjhRQMK5cl3Ok3XGLhXyi7 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 ======================================================== v2: * Address Huacai's comments. * Fix typos in commit message. Thanks, Enze Enze Li (4): LoongArch: mm: Add page table mapped mode support LoongArch: Get stack without NMI when providing regs parameter KFENCE: Defer the assignment of the local variable addr LoongArch: Add KFENCE support arch/loongarch/Kconfig | 1 + arch/loongarch/include/asm/kfence.h | 62 ++++++++++++++++++++++++++++ arch/loongarch/include/asm/page.h | 19 ++++++++- arch/loongarch/include/asm/pgtable.h | 16 ++++++- arch/loongarch/kernel/stacktrace.c | 20 ++++++--- arch/loongarch/mm/fault.c | 22 ++++++---- arch/loongarch/mm/pgtable.c | 6 +++ mm/kfence/core.c | 5 ++- 8 files changed, 133 insertions(+), 18 deletions(-) create mode 100644 arch/loongarch/include/asm/kfence.h