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 D819DC0015E for ; Fri, 28 Jul 2023 06:01:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 184426B0074; Fri, 28 Jul 2023 02:01:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 135C06B0075; Fri, 28 Jul 2023 02:01:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F3F2E6B0078; Fri, 28 Jul 2023 02:01:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id E76E56B0074 for ; Fri, 28 Jul 2023 02:01:58 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id ACE64C0E5A for ; Fri, 28 Jul 2023 06:01:58 +0000 (UTC) X-FDA: 81059974716.02.39AE05D Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) by imf27.hostedemail.com (Postfix) with ESMTP id 3E53240011 for ; Fri, 28 Jul 2023 06:01:54 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf27.hostedemail.com: domain of lienze@kylinos.cn designates 124.126.103.232 as permitted sender) smtp.mailfrom=lienze@kylinos.cn ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690524116; 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; bh=OD+aQJvPtw/BRqBGXBN6HjyY2HMr4e4whf2g7OZOeI0=; b=UTc1FSgndU1OVK5Bwze0zjpgcVsuOyZr9OVqDNKwuPSm4mEUR5ancqe/4fx7/Rh/C4h2XA djAaBUAeA+VNZzk6s5W0HRO9r8tMN6dALvQmQholS08DJRASL9ePEJyL4rKJjy7ItFwDYd ychYCEfJN6r3f0Z0lhnN/sqmf1B7C88= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf27.hostedemail.com: domain of lienze@kylinos.cn designates 124.126.103.232 as permitted sender) smtp.mailfrom=lienze@kylinos.cn ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690524116; a=rsa-sha256; cv=none; b=wheB9F5FnKZAO5wRKvwBc5MNoRtWWyeBvNFq2ROLxgSyCqjeM7rsbnPVDlMVwsBEdrqmQs 2oLrtDqQBhvwCrjrlYa/LUcP6PAzfpxjHCwSbCFBbT9d4B6dxt1cnhbVXxoZe1mgJWoYhV Bz6ACt30Byj04a/h/MbXBEMiH+ZsxGw= X-UUID: 396d4dbed1354d1eab9d06acfbe96f85-20230728 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.28,REQID:475f62b3-5a79-4e92-8548-a55a316fe131,IP:15, URL:0,TC:0,Content:0,EDM:0,RT:0,SF:-9,FILE:0,BULK:0,RULE:Release_Ham,ACTIO N:release,TS:6 X-CID-INFO: VERSION:1.1.28,REQID:475f62b3-5a79-4e92-8548-a55a316fe131,IP:15,UR L:0,TC:0,Content:0,EDM:0,RT:0,SF:-9,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:6 X-CID-META: VersionHash:176cd25,CLOUDID:18c58c42-d291-4e62-b539-43d7d78362ba,B ulkID:230728112732139381RX,BulkQuantity:2,Recheck:0,SF:24|17|19|43|102,TC: nil,Content:0,EDM:-3,IP:-2,URL:1,File:nil,Bulk:40,QS:nil,BEC:nil,COL:0,OSI :0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0 X-CID-BVR: 0,NGT X-CID-BAS: 0,NGT,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD,TF_CID_SPAM_FSI, TF_CID_SPAM_ULS X-UUID: 396d4dbed1354d1eab9d06acfbe96f85-20230728 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 189198503; Fri, 28 Jul 2023 14:01:35 +0800 From: Enze Li To: Jackie Liu Cc: 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, zhangqing@loongson.cn, yangtiezhu@loongson.cn, dvyukov@google.com Subject: Re: [PATCH 4/4 v2] LoongArch: Add KFENCE support In-Reply-To: (Jackie Liu's message of "Tue, 25 Jul 2023 22:34:50 +0800") References: <20230725061451.1231480-1-lienze@kylinos.cn> <20230725061451.1231480-5-lienze@kylinos.cn> Date: Fri, 28 Jul 2023 14:01:25 +0800 Message-ID: <87sf98a822.fsf@kylinos.cn> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 3E53240011 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 9e8bujzyzpfuw49wcwrskuawt19yq5jx X-HE-Tag: 1690524114-859648 X-HE-Meta: U2FsdGVkX19Lpea6pQAPW4Jh+Q3KmqOJKMZxEWQbCoO1UqgwfrVhv/U2P/ToKWE8vkHijbsh6oFq4BJxcoAfNFtdgCMX32RNI2n/0sWsEsFemhoJDUfs7In509V5PYzA84rI19LvFp7k2a5FfIVf8kVU6F2mN8FgonY9OfNrrBScUkfpxUB7iv510y2uG8s7BDAoLWLMpljyzdR40iQZOE3XzKL81D0aC9EdTifc/xSCc2Uy/vxpxHf8dc7HTUKgfDMfE/a+llN/RP+vfEmBHC/Y/CR+620k0748xgBljzNzCuEUSm1vAF5SYU6L7wI82rvI22jDzCzAaz+5XkV2uMxWLCvgO4jCkoMVIgiD7HRqng+SHW9ClPp6irQz0sWUlpXoTFdQr0+CkINjgSawYcM2mDkUkH2IvYWfY0P40x0/TllC0FZ3gXoxcGJ0u7YLlSVDFjysT3HLx6ZcGlipW8IyuuMFpsfH/H4/0Q4aDeuDWsT+K40UyvlxRwEQuezWqhHA9LxFzOZRf/2wwDXrDdBhFI8VVvlI1mb4N+NNURN+I9N+R4oc8zSJBba2daLX8i/LssevFlAIEyWLankRs2sF/OqASbEiSTxPXusjOXJS2nDHI2xx0fFoU6os3Fs/4Gc2dtk+fkk7e/TMpujGQBy7wqe6GDFgjZvAIvOfCs6GYbna0NT+AAuYEPsSMTnnErreohv3WmfFwmBXTieGIhvDvshtBR/iQiox+2u2eavuTb7ZuSYilaCfEni0yJsooK8XBfYubEAO8uX7AR0HaPLRVJBEJ2fA+Dug3PuxVA+V7I3rMdL58RH4yot63wJ2a1PpMHzy8tTlEJpsdr3Lz+4IWREypgtCRuiO1b1KuMhn5Vzb5Wv3/SQUOzx/pbFdImACE2+KYN79NWxP4hIBxeqXNkYe3fO1jAazioa61kR/ex9NML9qh+Tr+7uBGGclIa4/ShRlxyY3TNas2pF DvMeJX0D SojIKSc2bF5W0GIdjLI7X95SJVCXm60M41ufKYMShrYvguyOnwproBuBuLNa9ydu/0nJ4eu4nC8umTUcV3ptmUVmnfQB+/l9iokxwgFQMYnTRmHP8yTZv8yFMH0M2rQeP7oLK 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, Jul 25 2023 at 10:34:50 PM +0800, Jackie Liu wrote: > =E5=9C=A8 2023/7/25 14:14, Enze Li =E5=86=99=E9=81=93: >> The LoongArch architecture is quite different from other architectures. >> When the allocating of KFENCE itself is done, it is mapped to the direct >> mapping configuration window [1] by default on LoongArch. It means that >> it is not possible to use the page table mapped mode which required by >> the KFENCE system and therefore it should be remapped to the appropriate >> region. >> >> This patch adds architecture specific implementation details for KFENCE. >> In particular, this implements the required interface in . >> >> Tested this patch by running the testcases and all passed. >> >> [1] https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN= .html#virtual-address-space-and-address-translation-mode >> >> Signed-off-by: Enze Li >> --- >> arch/loongarch/Kconfig | 1 + >> arch/loongarch/include/asm/kfence.h | 62 ++++++++++++++++++++++++++++ >> arch/loongarch/include/asm/pgtable.h | 14 ++++++- >> arch/loongarch/mm/fault.c | 22 ++++++---- >> 4 files changed, 90 insertions(+), 9 deletions(-) >> create mode 100644 arch/loongarch/include/asm/kfence.h >> >> diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig >> index 70635ea3d1e4..5b63b16be49e 100644 >> --- a/arch/loongarch/Kconfig >> +++ b/arch/loongarch/Kconfig >> @@ -91,6 +91,7 @@ config LOONGARCH >> select HAVE_ARCH_AUDITSYSCALL >> select HAVE_ARCH_JUMP_LABEL >> select HAVE_ARCH_JUMP_LABEL_RELATIVE >> + select HAVE_ARCH_KFENCE >> select HAVE_ARCH_MMAP_RND_BITS if MMU >> select HAVE_ARCH_SECCOMP_FILTER >> select HAVE_ARCH_TRACEHOOK >> diff --git a/arch/loongarch/include/asm/kfence.h b/arch/loongarch/includ= e/asm/kfence.h >> new file mode 100644 >> index 000000000000..fb39076fe4d7 >> --- /dev/null >> +++ b/arch/loongarch/include/asm/kfence.h >> @@ -0,0 +1,62 @@ >> +/* SPDX-License-Identifier: GPL-2.0 */ >> +/* >> + * KFENCE support for LoongArch. >> + * >> + * Author: Enze Li >> + * Copyright (C) 2022-2023 KylinSoft Corporation. >> + */ >> + >> +#ifndef _ASM_LOONGARCH_KFENCE_H >> +#define _ASM_LOONGARCH_KFENCE_H >> + >> +#include >> +#include >> +#include >> + >> +static inline bool arch_kfence_init_pool(void) >> +{ >> + char *kfence_pool =3D __kfence_pool; >> + struct vm_struct *area; >> + int err; >> + >> + area =3D __get_vm_area_caller(KFENCE_POOL_SIZE, VM_IOREMAP, >> + KFENCE_AREA_START, KFENCE_AREA_END, >> + __builtin_return_address(0)); >> + if (!area) >> + return false; >> + >> + __kfence_pool =3D (char *)area->addr; > > I think there should be something wrong here. > >> + err =3D ioremap_page_range((unsigned long)__kfence_pool, >> + (unsigned long)__kfence_pool + KFENCE_POOL_SIZE, >> + virt_to_phys((void *)kfence_pool), >> + PAGE_KERNEL); >> + if (err) { >> + free_vm_area(area); > > If err > 0, return area->addr here, It's not correct. Hi Jackie, Good catch! I'll fix this issue in v3. Cheers! Enze