From patchwork Sun May 28 05:17:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 99876 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp777751vqr; Sat, 27 May 2023 23:27:26 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7MvaLyzHKcI085VGfNnsdRKkVbxlAORarcjUw2PdHQw2WghKXRvHCH66s9diLMlDYqwjVI X-Received: by 2002:a05:6a20:26b0:b0:10c:5745:3f4e with SMTP id h48-20020a056a2026b000b0010c57453f4emr4313300pze.56.1685255245794; Sat, 27 May 2023 23:27:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685255245; cv=none; d=google.com; s=arc-20160816; b=wqsEgLm8TlQR3obXm9MwRbG7Rwx2DrhLnrYD8/V23MZWqXRrim0l+jMUvmt/kf2PTt ImbByPdBRYh5kGaC+l7PRvrKNWb9Txorm3Ii7600f1eFsorATs85ydn90Kax0T3gWM0I yjJLOT2r4gJct91ECBQG3WxQm5Edw67lfxNpBc1Gght5pfhFWroB3MKBLDqvihwq5/xB oYGqydw1+ClemIcq28xA0MxKW+Y1oD9Kbi1Z1ZP6rHtZsDJ2x5kVGIUx2vZKiOIcIKm8 iGnaDb6SsB4pEqNydOnWVYaaPHajvT6h2I2e6onlyIOdBbX29p3z5QM7Zl/IcneGzLlM qLPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=qB/CuY0C3mMd2tLQICo6ra6b/WPH67iMZOq3bf6a71w=; b=piSi0MjhsD0ofOSusbqdlch7kkFfMM/2qwvKTc2cSHuQGHQOxNGm0nz4IEz4evz6R3 nkQapxANGPTFY/qGYfcgPzwCNj56HhwC/pzY0xKSHba5hH6hYclXEoKTQe/TTC/E3MJ2 fLV3e/zbR89qJ9+Il2icyoHbppcfxbVAGzwGdz1F6XUzu03i6F884YorRWJ+sp2MUfrU O6NUyvxftbfQ+hTJvdTlX9USfmcKSe1OGcgydqmFfNqNY7IRiAuyaLCcaVwZEWgGHL8H Q7Sco8UNiAlggXfDthNfigXqWr26+YxjQ3+1mI31l3uFvfm8Ktw1nBvwCfR3Dr3rz1ur RzvQ== 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w8-20020a63f508000000b0053424040bb7si7332563pgh.298.2023.05.27.23.27.10; Sat, 27 May 2023 23:27:25 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229518AbjE1F1C (ORCPT + 99 others); Sun, 28 May 2023 01:27:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45182 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229472AbjE1F0r (ORCPT ); Sun, 28 May 2023 01:26:47 -0400 Received: from mammoth.local.home (cpe-172-100-189-27.stny.res.rr.com [172.100.189.27]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id B7A33DE; Sat, 27 May 2023 22:26:40 -0700 (PDT) Received: by mammoth.local.home (Postfix, from userid 5657) id CF898300CD5; Sun, 28 May 2023 01:17:53 -0400 (EDT) From: Steven Rostedt To: LKML , Linux trace kernel Cc: Masami Hiramatsu , Mark Rutland , "Steven Rostedt (Google)" Subject: [PATCH 4/5] tracing: Only make selftest conditionals affect the global_trace Date: Sun, 28 May 2023 01:17:41 -0400 Message-Id: <20230528051742.1325503-5-rostedt@goodmis.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230528051742.1325503-1-rostedt@goodmis.org> References: <20230528051742.1325503-1-rostedt@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=2.8 required=5.0 tests=BAYES_00,KHOP_HELO_FCRDNS, PDS_RDNS_DYNAMIC_FP,RCVD_IN_PBL,RDNS_DYNAMIC,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Level: ** 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767118204452878913?= X-GMAIL-MSGID: =?utf-8?q?1767118204452878913?= From: "Steven Rostedt (Google)" The tracing_selftest_running and tracing_selftest_disabled variables were to keep trace_printk() and other writes from affecting the tracing selftests, as the tracing selftests would examine the ring buffer to see if it contained what it expected or not. trace_printk() and friends could add to the ring buffer and cause the selftests to fail (and then disable the tracer that was being tested). To keep that from happening, these variables were added and would keep trace_printk() and friends from writing to the ring buffer while the tests were going on. But this was only the top level ring buffer (owned by the global_trace instance). There is no reason to prevent writing into ring buffers of other instances via the trace_array_printk() and friends. For the functions that could be used by other instances, check if the global_trace is the tracer instance that is being written to before deciding to not allow the write. Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 004f5f99e943..64a4dde073ef 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -1054,7 +1054,10 @@ int __trace_array_puts(struct trace_array *tr, unsigned long ip, if (!(tr->trace_flags & TRACE_ITER_PRINTK)) return 0; - if (unlikely(tracing_selftest_running || tracing_disabled)) + if (unlikely(tracing_selftest_running && tr == &global_trace)) + return 0; + + if (unlikely(tracing_disabled)) return 0; alloc = sizeof(*entry) + size + 2; /* possible \n added */ @@ -3512,7 +3515,7 @@ __trace_array_vprintk(struct trace_buffer *buffer, unsigned int trace_ctx; char *tbuffer; - if (tracing_disabled || tracing_selftest_running) + if (tracing_disabled) return 0; /* Don't pollute graph traces with trace_vprintk internals */ @@ -3560,6 +3563,9 @@ __printf(3, 0) int trace_array_vprintk(struct trace_array *tr, unsigned long ip, const char *fmt, va_list args) { + if (tracing_selftest_running && tr == &global_trace) + return 0; + return __trace_array_vprintk(tr->array_buffer.buffer, ip, fmt, args); }