From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 654A819992C for ; Sat, 11 Jul 2026 01:20:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783732854; cv=none; b=AANquVC48B8qZuVTw5zEoLzzyXnuoqGlcpFBuvDJU1iV6dFhbKfP+BRcPpjvaeIes1SiOwUyGD9ZpW2hz5He5wxgzAImK1BDqD0AjmmDuMdVrCmkSr9ev7eiAF/tm91yhnwOYYuLXLIgklyHFFr96od6qGVGgZgCLCU0xUJOySA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783732854; c=relaxed/simple; bh=DmU8FIl2nMAJa98UGRReuyCbdLUt8HLtYhXL7zafE0E=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=JiP7mk5ev9x/HuD0KpVbNzAB9aosABpIR2F/mS812q0I0V+qMkL+ux17zUZnq/ngAOU0XS1JDIJBrpBw2KH6ZhNwmRtw0j4/X6Y1rWN8GDNSQLFqdh3tRp7zTO801pwAa0enn/lmOtzrSXM2nQV8OI/PjjBIYmjkKLl2/2RvaTg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hxQOlSMp; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hxQOlSMp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 478CE1F00A3D; Sat, 11 Jul 2026 01:20:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1783732853; bh=VmYYU4ZTFIzokm0gVitI+FaqTPXbOLyp4isJ50VBOqY=; h=Date:From:To:Cc:Subject:References; b=hxQOlSMpDTZVPIQJwA2DQPbBxSlK8im3yWDRN7HIkKxHu91bM/QZMLRXhnhY8Ujls 3+7zZw/cmhf2A/lvBAJrYr65gisf7n5d8xB4uSFtdMAyR4QAYkmcmPQX79HB7W2RZR F+xKqeroT3rrlPez6wrtCMK2fnkS3naMlV0zh3W4Undbs4xWy9eO+NSOK6C5lF4Y1a wKtEmhGTdRDWFp5ZdZFV8qGee4gxFvAePb8P18LKYNgZJG+SFMRsYeZiwIdz331tES ijqBzX3munYBUBy2eA926+KM68vw11sSM/9IukGC+kxfRjx/7YqabH6EgOFpCJcf5i 9897M/zHwsxvg== Received: from rostedt by gandalf with local (Exim 4.99.4) (envelope-from ) id 1wiMOu-00000002F3V-0aLx; Fri, 10 Jul 2026 21:21:04 -0400 Message-ID: <20260711012103.989865122@kernel.org> User-Agent: quilt/0.69 Date: Fri, 10 Jul 2026 21:20:43 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , Sashiko , Vincent Donnefort Subject: [for-linus][PATCH 3/4] tracing/remotes: Fix struct_len in trace_remote_alloc_buffer() References: <20260711012040.762290323@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 From: Vincent Donnefort Pre-calculate desc->struct_len up-front in trace_remote_alloc_buffer() with trace_buffer_desc_size() to fix double-counting. While at it, use the accessor __first_ring_buffer_desc(). Link: https://patch.msgid.link/20260709160017.1729517-3-vdonnefort@google.com Fixes: 96e43537af54 ("tracing: Introduce trace remotes") Reported-by: Sashiko Signed-off-by: Vincent Donnefort Signed-off-by: Steven Rostedt --- kernel/trace/trace_remote.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/kernel/trace/trace_remote.c b/kernel/trace/trace_remote.c index d48042239d58..0f6ef5c36d84 100644 --- a/kernel/trace/trace_remote.c +++ b/kernel/trace/trace_remote.c @@ -979,27 +979,22 @@ EXPORT_SYMBOL_GPL(trace_remote_free_buffer); int trace_remote_alloc_buffer(struct trace_buffer_desc *desc, size_t desc_size, size_t buffer_size, const struct cpumask *cpumask) { + size_t min_desc_size = trace_buffer_desc_size(buffer_size, cpumask_weight(cpumask)); unsigned int nr_pages = max(DIV_ROUND_UP(buffer_size, PAGE_SIZE), 2UL) + 1; - void *desc_end = desc + desc_size; struct ring_buffer_desc *rb_desc; int cpu, ret = -ENOMEM; - if (desc_size < struct_size(desc, __data, 0)) + if (desc_size < min_desc_size) return -EINVAL; desc->nr_cpus = 0; - desc->struct_len = struct_size(desc, __data, 0); + desc->struct_len = min_desc_size; - rb_desc = (struct ring_buffer_desc *)&desc->__data[0]; + rb_desc = __first_ring_buffer_desc(desc); for_each_cpu(cpu, cpumask) { unsigned int id; - if ((void *)rb_desc + struct_size(rb_desc, page_va, nr_pages) > desc_end) { - ret = -EINVAL; - goto err; - } - rb_desc->cpu = cpu; rb_desc->nr_page_va = 0; rb_desc->meta_va = (unsigned long)__get_free_page(GFP_KERNEL); @@ -1015,8 +1010,6 @@ int trace_remote_alloc_buffer(struct trace_buffer_desc *desc, size_t desc_size, rb_desc->nr_page_va++; } - desc->struct_len += offsetof(struct ring_buffer_desc, page_va); - desc->struct_len += struct_size(rb_desc, page_va, rb_desc->nr_page_va); rb_desc = __next_ring_buffer_desc(rb_desc); } -- 2.53.0