From nobody Fri Dec 19 18:52:14 2025 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 51770303CA1 for ; Thu, 6 Nov 2025 21:03:58 +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=1762463038; cv=none; b=LkX6Sl7OaZWHq7wVAw3jJf9X4PfZHOpjb8bkU4IHeFFZoM7yXuGCPc7/lOZ6hbKM4apvdquUf+2n4PhvNqJzqTs5D/CT3O5O00H2rgzV996yp6dY9i/17mKxyOgtZ7fV3s9JoqzBbuqOPpZmETwMC9MDqS4yJNE5ZNBzoF8HPOk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762463038; c=relaxed/simple; bh=voCNL6Frp/bCeX0n8ab8z3IJn8JPD5gDRgf0KDYYEA4=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=ONZK2nsCCYMeBTFuF4rEhCcA3ovh1Vrere/RrumH3c71apZHf/kamJP9aO1GhnOg7x0X+UStZMkZCp8/Rx+Ck98SMIjaJZoDrGIHxoTtVxMenrFG1KTcj2l1UeQ9PukyQpAplIJKKWVMxeICAL736aH63o06YJE49zshcLfH1s0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MNOLYOZI; 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="MNOLYOZI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E1D5CC2BC86; Thu, 6 Nov 2025 21:03:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1762463037; bh=voCNL6Frp/bCeX0n8ab8z3IJn8JPD5gDRgf0KDYYEA4=; h=Date:From:To:Cc:Subject:References:From; b=MNOLYOZIxSABILKahp2sC4pu7ujQbMQLEUaNJbj34g/5wHvDsva3bW6Eua3Q/WyRL y/Ctgs1651DZVDAuzbf1jiGMvvYSXaaGcGhiXDo6ZPsLCrSZ8IFMg/2e6ZShip3NFQ lwTGffGa7acnKCy2Fap7ivfSir/Bn8i8yWVGd9qxHUeYf5QU6AZZF4VFSfVGhJ9uXb cdSFZ/DPVhAJmUZDZW+bTDW8PYmy0XdY13ClhaSkemO7N9+1gvlesRLtgQl/FKM9Mt rsLrQzbMssdLiFOIClMM49fGNGF0s3SsK28jyP7PnzPbBi6lrHL7HFXoZ3FdBK+hC7 F3Cr6jEqZk71A== Received: from rostedt by gandalf with local (Exim 4.98.2) (envelope-from ) id 1vH79B-000000008Cq-2h6Y; Thu, 06 Nov 2025 16:03:57 -0500 Message-ID: <20251106210357.498967804@kernel.org> User-Agent: quilt/0.68 Date: Thu, 06 Nov 2025 16:03:35 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton Subject: [for-next][PATCH 4/7] tracing: Remove dummy options and flags References: <20251106210331.537317097@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Steven Rostedt When a tracer does not define their own flags, dummy options and flags are used so that the values are always valid. There's not that many locations that reference these values so having dummy versions just complicates the code. Remove the dummy values and just check for NULL when appropriate. Cc: Masami Hiramatsu Cc: Mark Rutland Cc: Mathieu Desnoyers Cc: Andrew Morton Link: https://patch.msgid.link/20251105161935.206093132@kernel.org Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace.c | 48 +++++++++++++++----------------------------- 1 file changed, 16 insertions(+), 32 deletions(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 0e822db5d9e4..afeaa9a164e9 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -94,17 +94,6 @@ static bool tracepoint_printk_stop_on_boot __initdata; static bool traceoff_after_boot __initdata; static DEFINE_STATIC_KEY_FALSE(tracepoint_printk_key); =20 -/* For tracers that don't implement custom flags */ -static struct tracer_opt dummy_tracer_opt[] =3D { - { } -}; - -static int -dummy_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set) -{ - return 0; -} - /* * To prevent the comm cache from being overwritten when no * tracing is active, only save the comm when a trace event @@ -2356,23 +2345,9 @@ int __init register_tracer(struct tracer *type) } } =20 - if (!type->set_flag) - type->set_flag =3D &dummy_set_flag; - if (!type->flags) { - /*allocate a dummy tracer_flags*/ - type->flags =3D kmalloc(sizeof(*type->flags), GFP_KERNEL); - if (!type->flags) { - ret =3D -ENOMEM; - goto out; - } - type->flags->val =3D 0; - type->flags->opts =3D dummy_tracer_opt; - } else - if (!type->flags->opts) - type->flags->opts =3D dummy_tracer_opt; - /* store the tracer for __set_tracer_option */ - type->flags->trace =3D type; + if (type->flags) + type->flags->trace =3D type; =20 ret =3D do_run_tracer_selftest(type); if (ret < 0) @@ -5159,14 +5134,12 @@ static int tracing_trace_options_show(struct seq_fi= le *m, void *v) { struct tracer_opt *trace_opts; struct trace_array *tr =3D m->private; + struct tracer *trace; u32 tracer_flags; int i; =20 guard(mutex)(&trace_types_lock); =20 - tracer_flags =3D tr->current_trace->flags->val; - trace_opts =3D tr->current_trace->flags->opts; - for (i =3D 0; trace_options[i]; i++) { if (tr->trace_flags & (1ULL << i)) seq_printf(m, "%s\n", trace_options[i]); @@ -5174,6 +5147,13 @@ static int tracing_trace_options_show(struct seq_fil= e *m, void *v) seq_printf(m, "no%s\n", trace_options[i]); } =20 + trace =3D tr->current_trace; + if (!trace->flags || !trace->flags->opts) + return 0; + + tracer_flags =3D tr->current_trace->flags->val; + trace_opts =3D tr->current_trace->flags->opts; + for (i =3D 0; trace_opts[i].name; i++) { if (tracer_flags & trace_opts[i].bit) seq_printf(m, "%s\n", trace_opts[i].name); @@ -5189,9 +5169,10 @@ static int __set_tracer_option(struct trace_array *t= r, struct tracer_opt *opts, int neg) { struct tracer *trace =3D tracer_flags->trace; - int ret; + int ret =3D 0; =20 - ret =3D trace->set_flag(tr, tracer_flags->val, opts->bit, !neg); + if (trace->set_flag) + ret =3D trace->set_flag(tr, tracer_flags->val, opts->bit, !neg); if (ret) return ret; =20 @@ -5210,6 +5191,9 @@ static int set_tracer_option(struct trace_array *tr, = char *cmp, int neg) struct tracer_opt *opts =3D NULL; int i; =20 + if (!tracer_flags || !tracer_flags->opts) + return 0; + for (i =3D 0; tracer_flags->opts[i].name; i++) { opts =3D &tracer_flags->opts[i]; =20 --=20 2.51.0