From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 76E94344052; Wed, 29 Apr 2026 08:51:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777452708; cv=none; b=L6jr4vtQZJAzwbsk9c7eb7ld+1oN9AOrhrKxxdtuvU7MDLGfq+Yad1ahCAVlicxIcYO76j/wBBUIO8hkjHmHi1yQdZJGP/aSHys13kJIzEa2zeuQPUroGRetr35tZZb+tDojPqCajeeUTCYN0G3Uys80Q6m3WJcx+l50wLJTOOM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777452708; c=relaxed/simple; bh=PTzfX/fwmBD3R0/iLa8YziPXZF2MiVguZWu9y+6RSwk=; h=Date:From:To:Cc:Subject:Message-Id:In-Reply-To:References: Mime-Version:Content-Type; b=VUCNp9AKNyt1N+BVriPDSqrzhsJiFR7KxHQpWnwCA08QFYKWSu27/7hVVMNOnxnUIzMw+bWa9nWloSSzio/vhipbJftQCcefa59wcHsRwS5D3tFqFuy+rxMzHOKanvMlCpEBPNL10PBt2kzmUn5ITsI3alj4pT0Dhg7vf/SjElQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=o2X27LGw; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="o2X27LGw" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C8DC3C19425; Wed, 29 Apr 2026 08:51:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1777452708; bh=PTzfX/fwmBD3R0/iLa8YziPXZF2MiVguZWu9y+6RSwk=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=o2X27LGwU2slbXmcdkVMwguiF77QaiQQw02haMRXzn+wZPprXEItuy9ZJcucqhZ2d yqlLDlkE0ecQCVMCe5dLMBxCXVEVDCerpl7PG8B6FuyoNk8vsW3ERjjP/gOvpwu9pH upRE9edZHURJxjpXxBiBYUuvEJ1dXwu+UQb2/OjtVjp0qvHEyji9g81UL4cWY3mw0c g6ftc8jf0JSVpk6HbvXKZAFCRXaM1XF+upOOaUGlgBs9Vf/E0rYyf+Ji0NcM3T4ZoG rN8ZKKbvgT79EJNI3GoHTNlhU7Tfj4f6BNuzGny+LIzxgSFCasnfBrebrmfIwgcqrB 9YuFo6YqUY/gA== Date: Wed, 29 Apr 2026 17:51:44 +0900 From: Masami Hiramatsu (Google) To: Steven Rostedt Cc: LKML , Linux Trace Kernel , Masami Hiramatsu , Mathieu Desnoyers Subject: Re: [PATCH] tracing/probes: Limit size of event probe to 3K Message-Id: <20260429175144.9d3d6e13e935f1dfd480f6a0@kernel.org> In-Reply-To: <20260428122302.706610ba@gandalf.local.home> References: <20260428122302.706610ba@gandalf.local.home> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) 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=US-ASCII Content-Transfer-Encoding: 7bit Hi Steve, BTW, to prevent regressions during future expansions, how about adding the following line? diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c index 2cabf8a23ec5..c5ee7920dec6 100644 --- a/kernel/trace/trace_uprobe.c +++ b/kernel/trace/trace_uprobe.c @@ -979,6 +979,7 @@ static struct uprobe_cpu_buffer *prepare_uprobe_buffer(struct trace_uprobe *tu, ucb = uprobe_buffer_get(); ucb->dsize = tu->tp.size + dsize; + BUILD_BUG_ON(MAX_UCB_BUFFER_SIZE < MAX_PROBE_EVENT_SIZE); if (WARN_ON_ONCE(ucb->dsize > MAX_UCB_BUFFER_SIZE)) { ucb->dsize = MAX_UCB_BUFFER_SIZE; dsize = MAX_UCB_BUFFER_SIZE - tu->tp.size; Thanks, On Tue, 28 Apr 2026 12:23:02 -0400 Steven Rostedt wrote: > From: Steven Rostedt > > There currently isn't a max limit an event probe can be. One could make an > event greater than PAGE_SIZE, which makes the event useless because if > it's bigger than the max event that can be recorded into the ring buffer, > then it will never be recorded. > > A event probe should never need to be greater than 3K, so make that the > max size. As long as the max is less than the max that can be recorded > onto the ring buffer, it should be fine. > > Cc: stable@vger.kernel.org > Fixes: 93ccae7a22274 ("tracing/kprobes: Support basic types on dynamic events") > Signed-off-by: Steven Rostedt > --- > kernel/trace/trace_probe.c | 6 ++++++ > kernel/trace/trace_probe.h | 4 +++- > 2 files changed, 9 insertions(+), 1 deletion(-) > > diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c > index e1c73065dae5..e0d3a0da26af 100644 > --- a/kernel/trace/trace_probe.c > +++ b/kernel/trace/trace_probe.c > @@ -1523,6 +1523,12 @@ static int traceprobe_parse_probe_arg_body(const char *argv, ssize_t *size, > parg->offset = *size; > *size += parg->type->size * (parg->count ?: 1); > > + if (*size > MAX_PROBE_EVENT_SIZE) { > + ret = -E2BIG; > + trace_probe_log_err(ctx->offset, EVENT_TOO_BIG); > + goto fail; > + } > + > if (parg->count) { > len = strlen(parg->type->fmttype) + 6; > parg->fmt = kmalloc(len, GFP_KERNEL); > diff --git a/kernel/trace/trace_probe.h b/kernel/trace/trace_probe.h > index 9fc56c937130..262d8707a3df 100644 > --- a/kernel/trace/trace_probe.h > +++ b/kernel/trace/trace_probe.h > @@ -38,6 +38,7 @@ > #define MAX_BTF_ARGS_LEN 128 > #define MAX_DENTRY_ARGS_LEN 256 > #define MAX_STRING_SIZE PATH_MAX > +#define MAX_PROBE_EVENT_SIZE 3072 > > /* Reserved field names */ > #define FIELD_STRING_IP "__probe_ip" > @@ -561,7 +562,8 @@ extern int traceprobe_define_arg_fields(struct trace_event_call *event_call, > C(BAD_TYPE4STR, "This type does not fit for string."),\ > C(NEED_STRING_TYPE, "$comm and immediate-string only accepts string type"),\ > C(TOO_MANY_ARGS, "Too many arguments are specified"), \ > - C(TOO_MANY_EARGS, "Too many entry arguments specified"), > + C(TOO_MANY_EARGS, "Too many entry arguments specified"), \ > + C(EVENT_TOO_BIG, "Event too big (too many fields?)"), > > #undef C > #define C(a, b) TP_ERR_##a > -- > 2.53.0 > -- Masami Hiramatsu (Google)