Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp2260743rwb; Mon, 19 Sep 2022 02:13:12 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7AT/mAnnNbLE4W0ckvWgQVZkSD08w2ae7mr+PbsroOAnYzofkx7NSVC8HVmVtDW1e19+OI X-Received: by 2002:a17:90b:3903:b0:202:affa:1c9f with SMTP id ob3-20020a17090b390300b00202affa1c9fmr19206584pjb.27.1663578792274; Mon, 19 Sep 2022 02:13:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663578792; cv=none; d=google.com; s=arc-20160816; b=JUGqlFKSOhrmChv04kosirwmrUBy2qhpkaHsA/1Ik3pahrTP2VGLsgDOoD28SO7qtU /XUM+tsaz4B18itm1JN/WU6O8X7YsHSp/4c10BCdWdiCubDcpZVHvC92uwassuc4euSd Q+KdWIH//VhkVtD1sO09tHyd3b+0zu+q36NMyVSKepa4vCLHpGrPy3vzRfjLhr8XPuaE 46R1391z3HZ8AXI1FyI9jfyWx+6SsNmidzN/I2iqf9EeLDLCtJIAEnRWTYeIbnnbJSxy DsPduYbbMYr3Jo/fIL0K4lbTWlmnBeTcHtLmNPT+8G14wSmLY1Ou9sPfi8cynQUewUm0 4gEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=l2T9/YBFO04ZMSIoWIPYD8Mbo3T6JOcJ996Si78am5Y=; b=j/uLwugZcoPWgEbFjuhSKnyzJQnXdsls1EnreB1z5tYuMtn7KFTdQ1mjNIucQjebEH 4gT9jqLS296g+Sd+vTZCZI+YVX5z6YXF2LmQE7mCG2kxolUDL9BBMQ5m86zN4ACFFvIA J60ZcXJyBH0DPc5jmTBZ7RMaVsN4iBgxSL/iIhu8S8RFm+MQM7YpHmB2PvJUEoxYQABp CZErThUkdC3jE57cYWcz7SQMC15Zyci+MnVoiAHbaWw5DSBH0Lgr5jZa5QclmzjsflkW IF7p3NIEACSi3WTXvERLz6YW6FnD0z5ktTtjuaUt/qJ6vqug0eqlgjYibb3H5xyIlp4y xB1A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q79-20020a632a52000000b004394630678bsi19992501pgq.193.2022.09.19.02.13.01; Mon, 19 Sep 2022 02:13:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230190AbiISIuA (ORCPT + 99 others); Mon, 19 Sep 2022 04:50:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43898 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230209AbiISIto (ORCPT ); Mon, 19 Sep 2022 04:49:44 -0400 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6BD73237C3 for ; Mon, 19 Sep 2022 01:49:17 -0700 (PDT) Received: from kwepemi500012.china.huawei.com (unknown [172.30.72.57]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4MWJCd39KkzmVVN; Mon, 19 Sep 2022 16:45:17 +0800 (CST) Received: from huawei.com (10.67.174.53) by kwepemi500012.china.huawei.com (7.221.188.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Mon, 19 Sep 2022 16:49:09 +0800 From: Liao Chang To: , , , , CC: , Subject: [PATCH] kprobes: Mark ftrace mcount handler functions nokprobe Date: Mon, 19 Sep 2022 16:45:33 +0800 Message-ID: <20220919084533.42318-1-liaochang1@huawei.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.67.174.53] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To kwepemi500012.china.huawei.com (7.221.188.12) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,LONGWORDS, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Mark ftrace mcount handler functions nokprobe since probing on these functions probably reaches mcount recursivly during kprobe breakpoint handler for some architecture(tested for riscv, arm64), and reenter kprobe is treated as a fatal error, causes kernel panic. Pesudo code below demonstrate this problem: mcount function_trace_call (probed) arch_breakpoint_handler arch_setup_singlestep [mcount] function_trace_call (probed) arch_breakpoint_handler reenter_kprobe BUG Signed-off-by: Liao Chang --- kernel/trace/trace_functions.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/kernel/trace/trace_functions.c b/kernel/trace/trace_functions.c index 9f1bfbe105e8..440a678a8c7c 100644 --- a/kernel/trace/trace_functions.c +++ b/kernel/trace/trace_functions.c @@ -16,6 +16,7 @@ #include #include #include +#include #include "trace.h" @@ -194,6 +195,7 @@ function_trace_call(unsigned long ip, unsigned long parent_ip, ftrace_test_recursion_unlock(bit); } +NOKPROBE_SYMBOL(function_trace_call); #ifdef CONFIG_UNWINDER_ORC /* @@ -245,6 +247,7 @@ function_stack_trace_call(unsigned long ip, unsigned long parent_ip, atomic_dec(&data->disabled); local_irq_restore(flags); } +NOKPROBE_SYMBOL(function_stack_trace_call); static inline bool is_repeat_check(struct trace_array *tr, struct trace_func_repeats *last_info, @@ -321,6 +324,7 @@ function_no_repeats_trace_call(unsigned long ip, unsigned long parent_ip, out: ftrace_test_recursion_unlock(bit); } +NOKPROBE_SYMBOL(function_no_repeats_trace_call); static void function_stack_no_repeats_trace_call(unsigned long ip, unsigned long parent_ip, @@ -363,6 +367,7 @@ function_stack_no_repeats_trace_call(unsigned long ip, unsigned long parent_ip, atomic_dec(&data->disabled); local_irq_restore(flags); } +NOKPROBE_SYMBOL(function_stack_no_repeats_trace_call); static struct tracer_opt func_opts[] = { #ifdef CONFIG_STACKTRACE -- 2.17.1