From patchwork Thu Dec 7 02:37:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 174883 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp4515306vqy; Wed, 6 Dec 2023 18:38:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IFl0FUKoKwMc7RFytqlPdV8VPr6FLDyxn44reAibRXk/VnPhXoXgRp1n23x/aZS62DxF4Oi X-Received: by 2002:a17:903:245:b0:1d0:6ffd:6e72 with SMTP id j5-20020a170903024500b001d06ffd6e72mr1837160plh.106.1701916699758; Wed, 06 Dec 2023 18:38:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701916699; cv=none; d=google.com; s=arc-20160816; b=lvxykJf1GoFl4OVLL5T5Hai09KWRjP73emcUUHPklpF9+uCnDxXQj776egkSR5gaDd lc3t70asA8ikHq8WNvQXJE8bUfYQ52dGqkil3p14jlO9KIL3llXTym3MfGxSp3TTexvN OiqmxvS/wzJJQzDKan+QY/Gayog7wlE0gLdZnh/auoliGPMkJAhJIw8pp6I7FOEGSGWZ vBm2X37y0Wtpm+6683bsQ7OAzfOrFiMKT9zPKL/GryR68qfBFXSy2Ewq2Qrm18e4zL1j tAQjNZhYmLlEbSC6kJu4dVLsytyF6M8bbKlBXUx39XrrmahFNsVgD+RIdJ4YkkZK3je1 /mqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=nbn8HUaRmBoE3HYPnicG8vzgFreCvgjSTbWJu/ikQEs=; fh=hu/11vjhAVGN2soHkDrejjtKeeIeHno3fFH7CvZIC0Y=; b=EFsNZsio15tW8Mx9JzoA6A8AH72l+fIHXk8rlvMZV9T4xNRxNZPSrb/77SbLA2CsU/ RpF21JXmhXjFM7VWoo6DjvalEKcRYXgtVBobd1VlUMrdmmIl8FvCer8OW1p1qtnt8PSw O4M8Olmr40sEu/m8Zq1QsMMKqAFIMS198/3UaqVrYP2444LuSLcvONH2Xb2njX5lDFIL sDa8eZQzOSTuSefxIiHXxbbkiwHpIGPZJObzJhCq12XAXsBWaSLd366jfMafmJAhrkGI TgonJ3cS7nPO8P1xb8HlKGJczlHEziNIXGkP3ZOsyUNxm1IsOYGUDJhEM55HgpCCI3R7 tDsQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id iz15-20020a170902ef8f00b001cfc3563badsi245399plb.629.2023.12.06.18.38.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 18:38:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id D9E7080916B5; Wed, 6 Dec 2023 18:37:53 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235208AbjLGChp (ORCPT + 99 others); Wed, 6 Dec 2023 21:37:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55736 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231272AbjLGChn (ORCPT ); Wed, 6 Dec 2023 21:37:43 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A63ECD51 for ; Wed, 6 Dec 2023 18:37:49 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 496E2C433C9; Thu, 7 Dec 2023 02:37:49 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.97) (envelope-from ) id 1rB4HK-00000001aMj-49r6; Wed, 06 Dec 2023 21:38:19 -0500 Message-ID: <20231207023818.766723807@goodmis.org> User-Agent: quilt/0.67 Date: Wed, 06 Dec 2023 21:37:53 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , stable@vger.kernel.org Subject: [for-linus][PATCH 1/8] tracing: Always update snapshot buffer size References: <20231207023752.712829638@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Wed, 06 Dec 2023 18:37:54 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784589005364909251 X-GMAIL-MSGID: 1784589005364909251 From: "Steven Rostedt (Google)" It use to be that only the top level instance had a snapshot buffer (for latency tracers like wakeup and irqsoff). The update of the ring buffer size would check if the instance was the top level and if so, it would also update the snapshot buffer as it needs to be the same as the main buffer. Now that lower level instances also has a snapshot buffer, they too need to update their snapshot buffer sizes when the main buffer is changed, otherwise the following can be triggered: # cd /sys/kernel/tracing # echo 1500 > buffer_size_kb # mkdir instances/foo # echo irqsoff > instances/foo/current_tracer # echo 1000 > instances/foo/buffer_size_kb Produces: WARNING: CPU: 2 PID: 856 at kernel/trace/trace.c:1938 update_max_tr_single.part.0+0x27d/0x320 Which is: ret = ring_buffer_swap_cpu(tr->max_buffer.buffer, tr->array_buffer.buffer, cpu); if (ret == -EBUSY) { [..] } WARN_ON_ONCE(ret && ret != -EAGAIN && ret != -EBUSY); <== here That's because ring_buffer_swap_cpu() has: int ret = -EINVAL; [..] /* At least make sure the two buffers are somewhat the same */ if (cpu_buffer_a->nr_pages != cpu_buffer_b->nr_pages) goto out; [..] out: return ret; } Instead, update all instances' snapshot buffer sizes when their main buffer size is updated. Link: https://lkml.kernel.org/r/20231205220010.454662151@goodmis.org Cc: stable@vger.kernel.org Cc: Masami Hiramatsu Cc: Mark Rutland Cc: Mathieu Desnoyers Cc: Andrew Morton Fixes: 6d9b3fa5e7f6 ("tracing: Move tracing_max_latency into trace_array") Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 9aebf904ff97..231c173ec04f 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -6392,8 +6392,7 @@ static int __tracing_resize_ring_buffer(struct trace_array *tr, return ret; #ifdef CONFIG_TRACER_MAX_TRACE - if (!(tr->flags & TRACE_ARRAY_FL_GLOBAL) || - !tr->current_trace->use_max_tr) + if (!tr->current_trace->use_max_tr) goto out; ret = ring_buffer_resize(tr->max_buffer.buffer, size, cpu);