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 679C44921B6 for ; Fri, 15 May 2026 15:20:54 +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=1778858454; cv=none; b=c1NSNYa1+ieMWGcud614R3tq5+ZNwPA7HSH75LHuRfolV59tlzAohbIcojxYciT65mdKeJxcw01HeM2Ekf5bc4+IIhbhV68uEp4Y3ETKUvTUtjJXt2KReGdIMyOpl4lJvYDnR1jPMMWpHs1Jf4a5Bc+SW6ooPimMuGcuKYeHeZc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778858454; c=relaxed/simple; bh=FSu1wLItKXlaAaj20YsFeoW8Km/q+ZAYlLmaiKE/Uz8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ed5vW7W70lUdcQld6ubjhf75cFiY1f2PlKCplF39lFBqmRftkUjZrK6Ba0DrUiavZp39xWdMb+IUCPsKAZGcmlwURWkHvU1Z6tFbwexyupOwUb3ZOY4yukv/xN0Y/HHNu9wwyy9wLABgU9Vb/A7rU8YXtPrS1YsI/p9cFObaLl8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=A09R2D4B; 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="A09R2D4B" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 936EBC2BCB0; Fri, 15 May 2026 15:20:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778858454; bh=FSu1wLItKXlaAaj20YsFeoW8Km/q+ZAYlLmaiKE/Uz8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=A09R2D4B/7wjpYJ0Cq87H0zstOK5VF+IDSwxCwE4QL33l2+GskYx5sGtWAaPrurNc j4/prcpSoYUmNY1rlI9j2C0MK4iIDbn1t8pZyD+zEraD2xvjWCBXswNHSoPDH0s9Bx oe4LED4+kIpiIz05saD1IG6Qe9j0+tf8I92pWtgJUvFxu9586jsI7bLUUktgHrH27v OjLA5XyjPFx2WZWHsy/ShkZfbiu9ZjQqX9gcbDTu26tHrHPeSpFzairMdSbt5Ro8uc FurXd56qfdFDKrBswFjY7uEXJUpdULFQE+y8d1Tw0wcW4IsPD3E7/IKzyY1RI75nrE 23VdAdKOqnQgg== From: Sasha Levin To: stable@vger.kernel.org Cc: Steven Rostedt , Mathieu Desnoyers , "Masami Hiramatsu (Google)" , Sasha Levin Subject: [PATCH 5.15.y] tracing/probes: Limit size of event probe to 3K Date: Fri, 15 May 2026 11:20:51 -0400 Message-ID: <20260515152051.3277784-1-sashal@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <2026051226-clench-could-77cf@gregkh> References: <2026051226-clench-could-77cf@gregkh> Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Steven Rostedt [ Upstream commit b2aa3b4d64e460ac606f386c24e7d8a873ce6f1a ] 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 Cc: Mathieu Desnoyers Acked-by: Masami Hiramatsu (Google) Fixes: 93ccae7a22274 ("tracing/kprobes: Support basic types on dynamic events") Link: https://patch.msgid.link/20260428122302.706610ba@gandalf.local.home Signed-off-by: Steven Rostedt [ adjusted context for missing later-kernel infrastructure and used `goto out` instead of `goto fail` ] Signed-off-by: Sasha Levin --- 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 38fa6cc118daf..4ff74fe2fbdc7 100644 --- a/kernel/trace/trace_probe.c +++ b/kernel/trace/trace_probe.c @@ -647,6 +647,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(offset, EVENT_TOO_BIG); + goto out; + } + ret = -ENOMEM; if (parg->count) { len = strlen(parg->type->fmttype) + 6; diff --git a/kernel/trace/trace_probe.h b/kernel/trace/trace_probe.h index b08aa3946868c..97003a41b6c13 100644 --- a/kernel/trace/trace_probe.h +++ b/kernel/trace/trace_probe.h @@ -33,6 +33,7 @@ #define MAX_ARRAY_LEN 64 #define MAX_ARG_NAME_LEN 32 #define MAX_STRING_SIZE PATH_MAX +#define MAX_PROBE_EVENT_SIZE 3072 /* Reserved field names */ #define FIELD_STRING_IP "__probe_ip" @@ -455,7 +456,8 @@ extern int traceprobe_define_arg_fields(struct trace_event_call *event_call, C(FAIL_REG_PROBE, "Failed to register probe event"),\ C(DIFF_PROBE_TYPE, "Probe type is different from existing probe"),\ C(DIFF_ARG_TYPE, "Argument type or name is different from existing probe"),\ - C(SAME_PROBE, "There is already the exact same probe event"), + C(SAME_PROBE, "There is already the exact same probe event"),\ + C(EVENT_TOO_BIG, "Event too big (too many fields?)"), #undef C #define C(a, b) TP_ERR_##a -- 2.53.0