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 39A15C04FFE for ; Fri, 26 Apr 2024 08:31:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C4B536B00AC; Fri, 26 Apr 2024 04:31:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BD2996B00AD; Fri, 26 Apr 2024 04:31:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A731B6B00AE; Fri, 26 Apr 2024 04:31:23 -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 89EDC6B00AC for ; Fri, 26 Apr 2024 04:31:23 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 56E4B161392 for ; Fri, 26 Apr 2024 08:31:23 +0000 (UTC) X-FDA: 82051013646.04.EB46343 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf16.hostedemail.com (Postfix) with ESMTP id 247B118000A for ; Fri, 26 Apr 2024 08:31:20 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=SmvyMUme; spf=pass (imf16.hostedemail.com: domain of rppt@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1714120281; 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:in-reply-to:references:references:dkim-signature; bh=zrqzgDNRKNGQexwDTOARBJiJTaC27zRhVtBugvEVZcA=; b=OLL3WoJOm/QjNy4KsWRIRFpwRdAiWRi2iz+1pMPrnF5NivKaKd4tgFaJJvOaT5c444BrNO u49qcqIDoPLZ6+a55d0rOgjl5ccYLUSaS5pr9VPdaOvEg2+lEf5PM/RSqVRMYexc7V53w2 i1330th7zEQUYJpUW1hEMHqq8rdp+/8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1714120281; a=rsa-sha256; cv=none; b=FlsmlNMlRv7pXtb1yV7C1JH4yyJ3y6aPi35WKMYjcMU9kETGO+doCJXE0BkqgdAOlAU0OF IcDXURUhCgAiDqeVNUX+gk6YH3Hvc0QVYH6AimMkBRTwNa5nQvqxBqmJGToDFnTNGVq6x0 2n59JmhTnJwMedUG0hhJN51tTfzdz8Q= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=SmvyMUme; spf=pass (imf16.hostedemail.com: domain of rppt@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 2B96FCE1BD8; Fri, 26 Apr 2024 08:31:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3D06EC32782; Fri, 26 Apr 2024 08:31:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1714120276; bh=QWGTfmxM6u4L/G8sJRSYS9LtFcq3UHArwE9pGA7ZHH0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SmvyMUmeeEFrWhUbUHKYn4DMMnLUUa1g4+adu28RzctMKycdCQJleanPBw3qpvC6e AXnB3fL3Y+frY4KjxDxYGEctRsFjDHtgJpKUgakhljuTLQyByVrPoqm8yiw/ese+Sw 3AINiEao90grvB42lX+M49xK2vOiscW+CXPmMzHjO1X9apGHPz/G5s/ugtCXfPjwN9 214UPXOSJDw2q4YRsmzMcVl4U8SiTEGKs66FQ/JJXbBMCpYr8IcUINJH7HXTRFtQYE XiSs76Z4km7d/H9zgVIB5QWLIoEWTs/cZi94+ScfkrPABGeDB46pF5CGfvdU8JqSEh +esHXQ/w0RQ+A== From: Mike Rapoport To: linux-kernel@vger.kernel.org Cc: Alexandre Ghiti , Andrew Morton , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , Catalin Marinas , Christophe Leroy , "David S. Miller" , Dinh Nguyen , Donald Dutile , Eric Chanudet , Heiko Carstens , Helge Deller , Huacai Chen , Kent Overstreet , Luis Chamberlain , Mark Rutland , Masami Hiramatsu , Michael Ellerman , Mike Rapoport , Nadav Amit , Palmer Dabbelt , Peter Zijlstra , Rick Edgecombe , Russell King , Sam Ravnborg , Song Liu , Steven Rostedt , Thomas Bogendoerfer , Thomas Gleixner , Will Deacon , bpf@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, linux-mm@kvack.org, linux-modules@vger.kernel.org, linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev, netdev@vger.kernel.org, sparclinux@vger.kernel.org, x86@kernel.org Subject: [PATCH v6 11/16] powerpc: extend execmem_params for kprobes allocations Date: Fri, 26 Apr 2024 11:28:49 +0300 Message-ID: <20240426082854.7355-12-rppt@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240426082854.7355-1-rppt@kernel.org> References: <20240426082854.7355-1-rppt@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: zpfq97xf333zssph1mjrfr3ate441u1u X-Rspamd-Queue-Id: 247B118000A X-Rspamd-Server: rspam06 X-Rspam-User: X-HE-Tag: 1714120280-526060 X-HE-Meta: U2FsdGVkX19E6vYUvHGHQWF1GFz1wShe+jCaZPhUdXUi+05AFk5SSlpPSpFIXTrNim1aeSksnBbpfUpFqvi3Cd7GIykMJ1GJwPFw/XfL3NxIObG23U1NbX0KOpXbiTae4at0v3Jeqf3OvwQk9rxXAR7UeaaYuxflhBJH/SzOftq0v1Qt+hFgb03qoNAfolvENhQuSL/2fbaFS8jFhF+9e45TVk6grExoOR6ATECjnnQInXMlwpdTmVBOFHy/Ilwy+1Ez7Yws5tGdHqFm62Rd5g1i1dTnwzj4IxFnisepnTQk0zQbX3LAD0jtl0LDn4QWC1fJ+BpN7HEB8DaW/ZrxeZcFRi+j9wz5uo2HP8/VTq6XBwAjbewwblndsnVwpeOvLxzRMQyTbbtELChVQcWEzJ2u5651EAMXk/d54r70C45tG0nCukTJzgGw/tWwk4HdZfg1NVd6KjKP7ek9KxvlheXAicsjToL+ujNCOdjmT+msB/LhaNZ4HU+LEoS3f7+ie2zuhZagKE4xv/DDnIuSb3NCyl1AqeuR9pe4TaW1rfDFWRJLkceFB7l4I47ozeGu3Rwhnz0DvarH+k1Db9nFTewpDRA11FwWynzJMUn/OOqWa5ecbg+Fni4J2i9q+aeU40tJltaKJAKAuXdeSYuyXqsVo8wFqeCjcPXAFYifejv0iTgPGktKlV/CA04r3ScVw+eVYNOlHRaRviB5sQLK4yRgnUIz0COqSKgRYemAg4n1VIutCYzYWNzvGLW06lNShkeHxoGffPXwrdlNzD08QYqHbOOO0I1h8SVe9IQPqH5sVz/AdMoaTOAMqfKTMVUJp2yp/yIDpzL9j1StslDGtBw4MicIGFREFuDlxvVgG210Z3KvQeFtM4uxv8P2gR/mBtBkggtYYFChXlgMnspZcY7WTU7wVKeBxRn/rEfsXYT0E2hLK6r2AbNCKBU1US46S7fzyOsAAKorOYPVOjE pNb3GHBm wxJOCQGNJicn1wQxpA4vOxasTNQ67LXwjamcfXvjrAbHxG+lTaUtGshnbFBpTV6gvbbrr8zJpHHMBcWw3RIXsz2uqlk3lqRdZfUuf7PfW4dL6aBsooxp7Mt6wdL87iyOw7UQO7F4BUHrDQToQ5+TdbiX1anGP7wLG1VWTw3/plrW44hedc1kfmEct60smRSPBeYDcF1uRg4i5c6QJ1XbgQX95Jh0GncrOzxn904ZUAGE7U2e3qNIZhaOPx2Qa6ei5pfFXVsxhVd3bLRoMzMlflYClNsZQobzLuxKKCSBJoImrocaNB/u9X36tr+OtHM6JFd4rVVJeJXbsWn1kbCq7ZV84I0Z0OTB58Zw6suqsTTMsBJxDaA952rBqRjAKoGW2zxkqtniTIjSjgBFJ5Zmgmy+gSnu5BPhuZSmbD15Rp9EhQQ3YgDpqllUKuQ== 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: List-Subscribe: List-Unsubscribe: From: "Mike Rapoport (IBM)" powerpc overrides kprobes::alloc_insn_page() to remove writable permissions when STRICT_MODULE_RWX is on. Add definition of EXECMEM_KRPOBES to execmem_params to allow using the generic kprobes::alloc_insn_page() with the desired permissions. As powerpc uses breakpoint instructions to inject kprobes, it does not need to constrain kprobe allocations to the modules area and can use the entire vmalloc address space. Signed-off-by: Mike Rapoport (IBM) --- arch/powerpc/kernel/kprobes.c | 20 -------------------- arch/powerpc/kernel/module.c | 7 +++++++ 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c index 9fcd01bb2ce6..14c5ddec3056 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c @@ -126,26 +126,6 @@ kprobe_opcode_t *arch_adjust_kprobe_addr(unsigned long addr, unsigned long offse return (kprobe_opcode_t *)(addr + offset); } -void *alloc_insn_page(void) -{ - void *page; - - page = execmem_alloc(EXECMEM_KPROBES, PAGE_SIZE); - if (!page) - return NULL; - - if (strict_module_rwx_enabled()) { - int err = set_memory_rox((unsigned long)page, 1); - - if (err) - goto error; - } - return page; -error: - execmem_free(page); - return NULL; -} - int arch_prepare_kprobe(struct kprobe *p) { int ret = 0; diff --git a/arch/powerpc/kernel/module.c b/arch/powerpc/kernel/module.c index ac80559015a3..2a23cf7e141b 100644 --- a/arch/powerpc/kernel/module.c +++ b/arch/powerpc/kernel/module.c @@ -94,6 +94,7 @@ static struct execmem_info execmem_info __ro_after_init; struct execmem_info __init *execmem_arch_setup(void) { + pgprot_t kprobes_prot = strict_module_rwx_enabled() ? PAGE_KERNEL_ROX : PAGE_KERNEL_EXEC; pgprot_t prot = strict_module_rwx_enabled() ? PAGE_KERNEL : PAGE_KERNEL_EXEC; unsigned long fallback_start = 0, fallback_end = 0; unsigned long start, end; @@ -132,6 +133,12 @@ struct execmem_info __init *execmem_arch_setup(void) .fallback_start = fallback_start, .fallback_end = fallback_end, }, + [EXECMEM_KPROBES] = { + .start = VMALLOC_START, + .end = VMALLOC_END, + .pgprot = kprobes_prot, + .alignment = 1, + }, [EXECMEM_MODULE_DATA] = { .start = VMALLOC_START, .end = VMALLOC_END, -- 2.43.0