From patchwork Tue Dec 12 12:25:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 177310 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7684465vqy; Tue, 12 Dec 2023 04:25:27 -0800 (PST) X-Google-Smtp-Source: AGHT+IG54F0sct6oVRJClPpQFG7z8W0r2tMO6h9rI0pdYZVIOfBGEgTGEsxOHu85eXQB2Wck1LcS X-Received: by 2002:a17:902:ea0c:b0:1d0:8555:a1bc with SMTP id s12-20020a170902ea0c00b001d08555a1bcmr3351817plg.13.1702383926795; Tue, 12 Dec 2023 04:25:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702383926; cv=none; d=google.com; s=arc-20160816; b=uGaM1NUqKxRRt8pbMX0abVaDT86tbOx9ZyT+Kfue98/+A4hFsFahPk6WoegDAdhDKe tF0af2ooEm7ZczNWci5RaSfEXN7zAIqu4YaJxGZQ4lbgiNJDwxV1dWWhwQEyeB5JeOah wO8KydxQoOm9xzS8p7xpon+/q27Pg/ctEbCiH/25z5vhfhdxPtwluchnpJ+BETE1FFpq SjONdv/P2FS/Ox4IJ009mU+r68Z3B0JcmuzrPbZPSg0hYlP8t14dbQhTMj+c+3jB8oWb 1ukEV1fJr7e8yxHNE11PDQV9dcqQD8uh644CW5KdLiG41J/2Jd+k/5BPE2Uw3OrG2tci wJzw== 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 :message-id:subject:cc:to:from:date; bh=2hjnFPx9ceHhaCpetQL06UU+jazbJRs8Z6vrN5y5njo=; fh=R8JZsVKDlS7lXIAvTNV55bsjlDBI0i4sqiOYXO4tZQA=; b=SPL1Gi4DpeU/vpRrRH2ppecJw8U+jHsBVKhrxSBBK+1kpESVkd1v/PrqOnjkC9bF/P ZBV34nfOrRJXBOXEIxftKSRWo8pLv96UXbuOcN3ORfDqhQnh5KfCbSFiZyJDvSeSQqeq igeify0/YzsjdQHCizLZ/WbAK22nHVIiGGTJuj0Q4v0UmWNIMi+OcWKH5ikwob496ZR0 IrO9qfXlpso3V+Tq1YzmKrH5aTTQwXf/RXDjlpfUPzlFhcOarjsV7+ERBGdf26p8SJ9P eKD6KVDgEj/qDMo8s4pnuyP/nNlLpO2u6ybhHwbXDaxiCIzUF7Tt7v9LDWrpoOunOS+h i/4Q== 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 w13-20020a170902e88d00b001d3376890b9si1016774plg.362.2023.12.12.04.25.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Dec 2023 04:25:26 -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 EC73880473DD; Tue, 12 Dec 2023 04:25:21 -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 S1346466AbjLLMZM (ORCPT + 99 others); Tue, 12 Dec 2023 07:25:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38360 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346470AbjLLMZL (ORCPT ); Tue, 12 Dec 2023 07:25:11 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1D1D5ED for ; Tue, 12 Dec 2023 04:25:18 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1468CC433C8; Tue, 12 Dec 2023 12:25:16 +0000 (UTC) Date: Tue, 12 Dec 2023 07:25:58 -0500 From: Steven Rostedt To: LKML , Linux Trace Kernel Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers Subject: [PATCH] ring-buffer: Have saved event hold the entire event Message-ID: <20231212072558.61f76493@gandalf.local.home> X-Mailer: Claws Mail 3.19.1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) 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]); Tue, 12 Dec 2023 04:25:22 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785078928283656071 X-GMAIL-MSGID: 1785078928283656071 From: "Steven Rostedt (Google)" For the ring buffer iterator (non-consuming read), the event needs to be copied into the iterator buffer to make sure that a writer does not overwrite it while the user is reading it. If a write happens during the copy, the buffer is simply discarded. But the temp buffer itself was not big enough. The allocation of the buffer was only BUF_MAX_DATA_SIZE, which is the maximum data size that can be passed into the ring buffer and saved. But the temp buffer needs to hold the meta data as well. That would be BUF_PAGE_SIZE and not BUF_MAX_DATA_SIZE. Cc: stable@vger.kernel.org Fixes: 785888c544e04 ("ring-buffer: Have rb_iter_head_event() handle concurrent writer") Signed-off-by: Steven Rostedt (Google) --- kernel/trace/ring_buffer.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 095b86081ea8..32e41ca41caf 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -2409,7 +2409,7 @@ rb_iter_head_event(struct ring_buffer_iter *iter) */ barrier(); - if ((iter->head + length) > commit || length > BUF_MAX_DATA_SIZE) + if ((iter->head + length) > commit || length > BUF_PAGE_SIZE) /* Writer corrupted the read? */ goto reset; @@ -5115,7 +5115,8 @@ ring_buffer_read_prepare(struct trace_buffer *buffer, int cpu, gfp_t flags) if (!iter) return NULL; - iter->event = kmalloc(BUF_MAX_DATA_SIZE, flags); + /* Holds the entire event: data and meta data */ + iter->event = kmalloc(BUF_PAGE_SIZE, flags); if (!iter->event) { kfree(iter); return NULL;