Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp254316pxj; Thu, 13 May 2021 04:16:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxKKzQcVHej4ewiz0jiex1jgD1vgg3lqBmA1dApwDTEtExyo11VuCTJZQOZ71vefHOsUrHF X-Received: by 2002:a05:6402:4252:: with SMTP id g18mr35432828edb.195.1620904597624; Thu, 13 May 2021 04:16:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620904597; cv=none; d=google.com; s=arc-20160816; b=WrWkk0d19Uy+Jki1ohK2vSPNroRs8g3kCzvyxdp9QkqViXahMDgZQ69TLDf4A1jfFY N9+MDaaqpAVA9hJ82mFR4t2j4ZY54i6MQ+Vq0KU4XbtdyxzjlQfYMP8d20gj6lOJjnQc 3Sa48zFnRlRw24j5Tst6pELlUYKQPYNYIyexDX1Lkk+r8MrfnQne6KZ+efVICSujBdUM 74tA5BU+POjfI9n6mjYag4sSOkW85LLfH34QG4Kj/boqwqduwtzzkuzKXlE6dogAQxr8 yWZ1n5qeE32c/CQFHMPRDS5hTMj4u1Lcdhq+BZGmKBUc2WVWZp26tX4HxXx72ayQkl/4 PKOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:cc:to:subject:from:references:in-reply-to :message-id; bh=abUCHma7oCfQ1FxY5AgLSt3SnxO/tW56HKwFhFptiVI=; b=YN75kA7MtX3Nj/j8lJlGBlPuJ7ofBm3w3aZiPmrlG74yZ6/0L4cPCStW7IpYBfjOak eaV5lFS7205qE5u5U2N7TZUbUGHioPGRTWTSvbRRHZTUm8VCSPE6FwWjOJtu9JXkaUJJ dy1ZscX2QrBgIJPsNVrU5aXzzxUO+HBxGGYKtYmkHsrW44lS7jAad1PQJMW1OGzsQdy5 2vEKT5n4Sqw8vFpp/y0abq7UM9CkvtPFOMkkbrqk4cqd6VdwsdT326CYWffX++eL0ssi 3VPZR1Chxjv8a3w1b1bbb4PntVFoHa0skdKTRrARKXaAIjC1Sj5YzZkKfZmpPEFtrxSz wgiA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c4si1551071edy.163.2021.05.13.04.16.11; Thu, 13 May 2021 04:16:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232479AbhEMJJU (ORCPT + 99 others); Thu, 13 May 2021 05:09:20 -0400 Received: from pegase2.c-s.fr ([93.17.235.10]:37351 "EHLO pegase2.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232418AbhEMJJI (ORCPT ); Thu, 13 May 2021 05:09:08 -0400 Received: from localhost (mailhub3.si.c-s.fr [172.26.127.67]) by localhost (Postfix) with ESMTP id 4Fgm5k1wbJz9sbZ; Thu, 13 May 2021 11:07:54 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from pegase2.c-s.fr ([172.26.127.65]) by localhost (pegase2.c-s.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6s838qCcO9bm; Thu, 13 May 2021 11:07:54 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase2.c-s.fr (Postfix) with ESMTP id 4Fgm5j5bH0z9sbQ; Thu, 13 May 2021 11:07:53 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 7F7958B7F3; Thu, 13 May 2021 11:07:53 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id 7BOwx6cbSXtS; Thu, 13 May 2021 11:07:53 +0200 (CEST) Received: from po15610vm.idsi0.si.c-s.fr (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 4925A8B76C; Thu, 13 May 2021 11:07:53 +0200 (CEST) Received: by po15610vm.idsi0.si.c-s.fr (Postfix, from userid 0) id 261DC64185; Thu, 13 May 2021 09:07:53 +0000 (UTC) Message-Id: In-Reply-To: <40a43d6df1fdf41ade36e9a46e60a4df774ca9f6.1620896780.git.christophe.leroy@csgroup.eu> References: <40a43d6df1fdf41ade36e9a46e60a4df774ca9f6.1620896780.git.christophe.leroy@csgroup.eu> From: Christophe Leroy Subject: [PATCH v2 2/2] powerpc/kprobes: Replace ppc_optinsn by common optinsn To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , naveen.n.rao@linux.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, mhiramat@kernel.org Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, clang-built-linux@googlegroups.com Date: Thu, 13 May 2021 09:07:53 +0000 (UTC) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit 51c9c0843993 ("powerpc/kprobes: Implement Optprobes") implemented a powerpc specific version of optinsn in order to workaround the 32Mb limitation for direct branches. Instead of implementing a dedicated powerpc version, use the common optinsn and override the allocation and freeing functions. This also indirectly remove the CLANG warning about is_kprobe_ppc_optinsn_slot() not being use, and the powerpc will now benefit from commit 5b485629ba0d ("kprobes, extable: Identify kprobes trampolines as kernel text area") Suggested-by: Masami Hiramatsu Signed-off-by: Christophe Leroy Acked-by: Masami Hiramatsu --- v2: no change --- arch/powerpc/kernel/optprobes.c | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/arch/powerpc/kernel/optprobes.c b/arch/powerpc/kernel/optprobes.c index cdf87086fa33..a370190cd02a 100644 --- a/arch/powerpc/kernel/optprobes.c +++ b/arch/powerpc/kernel/optprobes.c @@ -31,11 +31,9 @@ #define TMPL_END_IDX \ (optprobe_template_end - optprobe_template_entry) -DEFINE_INSN_CACHE_OPS(ppc_optinsn); - static bool insn_page_in_use; -static void *__ppc_alloc_insn_page(void) +void *alloc_optinsn_page(void) { if (insn_page_in_use) return NULL; @@ -43,20 +41,11 @@ static void *__ppc_alloc_insn_page(void) return &optinsn_slot; } -static void __ppc_free_insn_page(void *page __maybe_unused) +void free_optinsn_page(void *page) { insn_page_in_use = false; } -struct kprobe_insn_cache kprobe_ppc_optinsn_slots = { - .mutex = __MUTEX_INITIALIZER(kprobe_ppc_optinsn_slots.mutex), - .pages = LIST_HEAD_INIT(kprobe_ppc_optinsn_slots.pages), - /* insn_size initialized later */ - .alloc = __ppc_alloc_insn_page, - .free = __ppc_free_insn_page, - .nr_garbage = 0, -}; - /* * Check if we can optimize this probe. Returns NIP post-emulation if this can * be optimized and 0 otherwise. @@ -136,7 +125,7 @@ NOKPROBE_SYMBOL(optimized_callback); void arch_remove_optimized_kprobe(struct optimized_kprobe *op) { if (op->optinsn.insn) { - free_ppc_optinsn_slot(op->optinsn.insn, 1); + free_optinsn_slot(op->optinsn.insn, 1); op->optinsn.insn = NULL; } } @@ -203,14 +192,12 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op, struct kprobe *p) unsigned long nip, size; int rc, i; - kprobe_ppc_optinsn_slots.insn_size = MAX_OPTINSN_SIZE; - nip = can_optimize(p); if (!nip) return -EILSEQ; /* Allocate instruction slot for detour buffer */ - buff = get_ppc_optinsn_slot(); + buff = get_optinsn_slot(); if (!buff) return -ENOMEM; @@ -297,7 +284,7 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op, struct kprobe *p) return 0; error: - free_ppc_optinsn_slot(buff, 0); + free_optinsn_slot(buff, 0); return -ERANGE; } -- 2.25.0