From nobody Fri Dec 19 12:47:21 2025 Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) (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 91E081E98E6 for ; Sat, 6 Dec 2025 17:50:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.40.44.14 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765043450; cv=none; b=GEnBCeLSPbsuA8Zs/0yy7/1jEmeM7UxcIxL9PHIZ7YABwMK0G/xVptSpQ3fq99VIehoqlTOY3Uf2f+ndLMTnQmjR6y9gt0XOzse1IVj+zB0uQzn3/ghWZYnj9dqaWYVtS9hAqHnIX/Z+WWnLP+HPOXPdEYv5dqJr4gALRLOTwFE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765043450; c=relaxed/simple; bh=kBHLlQG6jaHd1P/jYDAs2CMTXk+ORiarZyYEt3fCnjQ=; h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type; b=Ff7EikZHg337LPHT+sQSXblJtvS3eLOCZ0usvE3TqMpyT6JqDIzE07g/iFbmpiBe9nCP5lZtOB7Dfj+Ihq3wDmXMQ8TDNjmOmTf69PV7NeIhvBBoeLNfkBQdJRtPC0+CqYrUYYxqBva/kR9IBSIgZUnG7/G6UWw9FKbi6bBuVTE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=goodmis.org; spf=pass smtp.mailfrom=goodmis.org; arc=none smtp.client-ip=216.40.44.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=goodmis.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goodmis.org Received: from omf13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 6E5DE13B5C1; Sat, 6 Dec 2025 17:50:39 +0000 (UTC) Received: from [HIDDEN] (Authenticated sender: rostedt@goodmis.org) by omf13.hostedemail.com (Postfix) with ESMTPA id A72BF2000D; Sat, 6 Dec 2025 17:50:37 +0000 (UTC) Date: Sat, 6 Dec 2025 12:50:36 -0500 From: Steven Rostedt To: Linus Torvalds Cc: LKML , Masami Hiramatsu , Mathieu Desnoyers , Mark Rutland , Maurice Hieronymus Subject: [GIT PULL] tracing: Some last minute fixes Message-ID: <20251206125036.7d288629@debian> X-Mailer: Claws Mail 4.3.1 (GTK 3.24.51; x86_64-redhat-linux-gnu) 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 X-Stat-Signature: 5gf7y4q55a6d6yj6enieqgt6bdfw5heu X-Rspamd-Server: rspamout04 X-Rspamd-Queue-Id: A72BF2000D X-Session-Marker: 726F737465647440676F6F646D69732E6F7267 X-Session-ID: U2FsdGVkX1+kvuBf1wNRVzHFKqPSWdDWqs+8QRZEMZA= X-HE-Tag: 1765043437-485058 X-HE-Meta: U2FsdGVkX18R1/UxiaxBIm2xzL8Jb+C1/FItBa20MH3DCMwfTm7GN26KLApEoowbbNJzOvPU+iV3iTolINUiMHeu5Axncq9jfOvq0Hn9wFLB93o6b6hlSsrvNYDyLxKQC3BTzfjBurBZfRROhxtrj96OPWRLxm12Q2yrHbFKIt5fWgQmOQl9uYVAVpnVUJ716UM1nFKLALAQ+SS391u8pBI9hlIXLY8lT9uJi+3wFSYKy0MBBSRrLDc0/tankwvGKu+us2kr1D1JuunRXgW6hUi0/kDwocoMLU7D+6ahN81xmdri2nbxTOHV57d9mnPxIHjuneKu6KkMc4sU/sADOueCEhK1WluN Content-Type: text/plain; charset="utf-8" Linus, tracing fixes for v6.19: - Fix accounting of stop_count in file release On opening the trace file, if "pause-on-trace" option is set, it will increment the stop_count. On file release, it checks if stop_count is set, and if so it decrements it. Since this code was originally written, the stop_count can be incremented by other use cases. This makes just checking the stop_count not enough to know if it should be decremented. Add a new iterator flag called "PAUSE" and have it set if the open disables tracing and only decrement the stop_count if that flag is set on close. - Remove length field in trace_seq_printf() of print_synth_event() When printing the synthetic event that has a static length array field, the vsprintf() of the trace_seq_printf() triggered a "(efault)" in the output. That's because the print_fmt replaced the "%.*s" with "%s" causing the arguments to be off. - Fix a bunch of typos Please pull the latest trace-v6.19-2 tree, which can be found at: git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git trace-v6.19-2 Tag SHA1: c3c7c8b2fc8a5cc806da41816b7b1c3b8652d27a Head SHA1: c5108c58b991cb6cac78947ac3811321895190e2 Maurice Hieronymus (13): tracing: Fix typo in fpgraph.c tracing: Fix typo in fprobe.c tracing: Fix multiple typos in ring_buffer.c tracing: Fix typo in ring_buffer_benchmark.c tracing: Fix multiple typos in trace.c tracing: Fix multiple typos in trace_events.c tracing: Fix typo in trace_events_filter.c tracing: Fix typo in trace_events_hist.c tracing: Fix typo in trace_events_trigger.c tracing: Fix multiple typos in trace_events_user.c tracing: Fix multiple typos in trace_osnoise.c tracing: Fix typo in trace_probe.c tracing: Fix typo in trace_seq.c Steven Rostedt (2): tracing: Fix enabling of tracing on file release tracing: Fix fixed array of synthetic event ---- include/linux/trace_events.h | 1 + kernel/trace/fgraph.c | 2 +- kernel/trace/fprobe.c | 2 +- kernel/trace/ring_buffer.c | 6 +++--- kernel/trace/ring_buffer_benchmark.c | 2 +- kernel/trace/trace.c | 16 +++++++++------- kernel/trace/trace_events.c | 8 ++++---- kernel/trace/trace_events_filter.c | 2 +- kernel/trace/trace_events_hist.c | 2 +- kernel/trace/trace_events_synth.c | 1 - kernel/trace/trace_events_trigger.c | 2 +- kernel/trace/trace_events_user.c | 6 +++--- kernel/trace/trace_osnoise.c | 12 ++++++------ kernel/trace/trace_probe.c | 2 +- kernel/trace/trace_seq.c | 2 +- 15 files changed, 34 insertions(+), 32 deletions(-) --------------------------- diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h index 04307a19cde3..3690221ba3d8 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -138,6 +138,7 @@ enum trace_iter_flags { TRACE_FILE_LAT_FMT =3D 1, TRACE_FILE_ANNOTATE =3D 2, TRACE_FILE_TIME_IN_NS =3D 4, + TRACE_FILE_PAUSE =3D 8, }; =20 =20 diff --git a/kernel/trace/fgraph.c b/kernel/trace/fgraph.c index 65ac0f04a946..cc48d16be43e 100644 --- a/kernel/trace/fgraph.c +++ b/kernel/trace/fgraph.c @@ -163,7 +163,7 @@ enum { #define RET_STACK(t, offset) ((struct ftrace_ret_stack *)(&(t)->ret_stack[= offset])) =20 /* - * Each fgraph_ops has a reservered unsigned long at the end (top) of the + * Each fgraph_ops has a reserved unsigned long at the end (top) of the * ret_stack to store task specific state. */ #define SHADOW_STACK_TASK_VARS(ret_stack) \ diff --git a/kernel/trace/fprobe.c b/kernel/trace/fprobe.c index 5a807d62e76d..10ae831f2710 100644 --- a/kernel/trace/fprobe.c +++ b/kernel/trace/fprobe.c @@ -29,7 +29,7 @@ * fprobe_table: hold 'fprobe_hlist::hlist' for checking the fprobe still * exists. The key is the address of fprobe instance. * fprobe_ip_table: hold 'fprobe_hlist::array[*]' for searching the fprobe - * instance related to the funciton address. The key is the ftrace IP + * instance related to the function address. The key is the ftrace IP * address. * * When unregistering the fprobe, fprobe_hlist::fp and fprobe_hlist::array= [*].fp diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 8688c88534de..41c9f5d079be 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -1770,7 +1770,7 @@ static bool rb_meta_init(struct trace_buffer *buffer,= int scratch_size) bmeta->total_size =3D total_size; bmeta->buffers_offset =3D (void *)ptr - (void *)bmeta; =20 - /* Zero out the scatch pad */ + /* Zero out the scratch pad */ memset((void *)bmeta + sizeof(*bmeta), 0, bmeta->buffers_offset - sizeof(= *bmeta)); =20 return false; @@ -6089,7 +6089,7 @@ static void rb_clear_buffer_page(struct buffer_page *= page) * id field, and updated via this function. * * But for a fixed memory mapped buffer, the id is already assigned for - * fixed memory ording in the memory layout and can not be used. Instead + * fixed memory ordering in the memory layout and can not be used. Instead * the index of where the page lies in the memory layout is used. * * For the normal pages, set the buffer page id with the passed in @id @@ -7669,7 +7669,7 @@ static __init int test_ringbuffer(void) /* * Show buffer is enabled before setting rb_test_started. * Yes there's a small race window where events could be - * dropped and the thread wont catch it. But when a ring + * dropped and the thread won't catch it. But when a ring * buffer gets enabled, there will always be some kind of * delay before other CPUs see it. Thus, we don't care about * those dropped events. We care about events dropped after diff --git a/kernel/trace/ring_buffer_benchmark.c b/kernel/trace/ring_buffe= r_benchmark.c index cdc3aea12c93..593e3b59e42e 100644 --- a/kernel/trace/ring_buffer_benchmark.c +++ b/kernel/trace/ring_buffer_benchmark.c @@ -433,7 +433,7 @@ static int __init ring_buffer_benchmark_init(void) { int ret; =20 - /* make a one meg buffer in overwite mode */ + /* make a one meg buffer in overwrite mode */ buffer =3D ring_buffer_alloc(1000000, RB_FL_OVERWRITE); if (!buffer) return -ENOMEM; diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index c9fbb316dcbd..e575956ef9b5 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -125,7 +125,7 @@ cpumask_var_t __read_mostly tracing_buffer_mask; * If there is an oops (or kernel panic) and the ftrace_dump_on_oops * is set, then ftrace_dump is called. This will output the contents * of the ftrace buffers to the console. This is very useful for - * capturing traces that lead to crashes and outputing it to a + * capturing traces that lead to crashes and outputting it to a * serial console. * * It is default off, but you can enable it with either specifying @@ -134,7 +134,7 @@ cpumask_var_t __read_mostly tracing_buffer_mask; * Set 1 if you want to dump buffers of all CPUs * Set 2 if you want to dump the buffer of the CPU that triggered oops * Set instance name if you want to dump the specific trace instance - * Multiple instance dump is also supported, and instances are seperated + * Multiple instance dump is also supported, and instances are separated * by commas. */ /* Set to string format zero to disable by default */ @@ -4709,8 +4709,10 @@ __tracing_open(struct inode *inode, struct file *fil= e, bool snapshot) * If pause-on-trace is enabled, then stop the trace while * dumping, unless this is the "snapshot" file */ - if (!iter->snapshot && (tr->trace_flags & TRACE_ITER(PAUSE_ON_TRACE))) + if (!iter->snapshot && (tr->trace_flags & TRACE_ITER(PAUSE_ON_TRACE))) { + iter->iter_flags |=3D TRACE_FILE_PAUSE; tracing_stop_tr(tr); + } =20 if (iter->cpu_file =3D=3D RING_BUFFER_ALL_CPUS) { for_each_tracing_cpu(cpu) { @@ -4842,7 +4844,7 @@ static int tracing_release(struct inode *inode, struc= t file *file) if (iter->trace && iter->trace->close) iter->trace->close(iter); =20 - if (!iter->snapshot && tr->stop_count) + if (iter->iter_flags & TRACE_FILE_PAUSE) /* reenable tracing if it was previously enabled */ tracing_start_tr(tr); =20 @@ -5276,7 +5278,7 @@ int set_tracer_flag(struct trace_array *tr, u64 mask,= int enabled) return -EINVAL; /* * An instance must always have it set. - * by default, that's the global_trace instane. + * by default, that's the global_trace instance. */ if (printk_trace =3D=3D tr) update_printk_trace(&global_trace); @@ -7554,7 +7556,7 @@ char *trace_user_fault_read(struct trace_user_buf_inf= o *tinfo, migrate_disable(); =20 /* - * Now preemption is being enabed and another task can come in + * Now preemption is being enabled and another task can come in * and use the same buffer and corrupt our data. */ preempt_enable_notrace(); @@ -11329,7 +11331,7 @@ __init static void do_allocate_snapshot(const char = *name) /* * When allocate_snapshot is set, the next call to * allocate_trace_buffers() (called by trace_array_get_by_name()) - * will allocate the snapshot buffer. That will alse clear + * will allocate the snapshot buffer. That will also clear * this flag. */ allocate_snapshot =3D true; diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 9b07ad9eb284..b16a5a158040 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -360,7 +360,7 @@ static bool process_string(const char *fmt, int len, st= ruct trace_event_call *ca /* Anything else, this isn't a function */ break; } - /* A function could be wrapped in parethesis, try the next one */ + /* A function could be wrapped in parenthesis, try the next one */ s =3D r + 1; } while (s < e); =20 @@ -567,7 +567,7 @@ static void test_event_printk(struct trace_event_call *= call) * If start_arg is zero, then this is the start of the * first argument. The processing of the argument happens * when the end of the argument is found, as it needs to - * handle paranthesis and such. + * handle parenthesis and such. */ if (!start_arg) { start_arg =3D i; @@ -785,7 +785,7 @@ static int __ftrace_event_enable_disable(struct trace_e= vent_file *file, * * When soft_disable is not set but the soft_mode is, * we do nothing. Do not disable the tracepoint, otherwise - * "soft enable"s (clearing the SOFT_DISABLED bit) wont work. + * "soft enable"s (clearing the SOFT_DISABLED bit) won't work. */ if (soft_disable) { if (atomic_dec_return(&file->sm_ref) > 0) @@ -1394,7 +1394,7 @@ int ftrace_set_clr_event(struct trace_array *tr, char= *buf, int set) if (!tr) return -ENOENT; =20 - /* Modules events can be appened with :mod: */ + /* Modules events can be appended with :mod: */ mod =3D strstr(buf, ":mod:"); if (mod) { *mod =3D '\0'; diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events= _filter.c index 54226b48b2d1..385af8405392 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c @@ -142,7 +142,7 @@ static bool is_not(const char *str) } =20 /** - * struct prog_entry - a singe entry in the filter program + * struct prog_entry - a single entry in the filter program * @target: Index to jump to on a branch (actually one minus the inde= x) * @when_to_branch: The value of the result of the predicate to do a bran= ch * @pred: The predicate to execute. diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_h= ist.c index 289bdea98776..5e6e70540eef 100644 --- a/kernel/trace/trace_events_hist.c +++ b/kernel/trace/trace_events_hist.c @@ -5283,7 +5283,7 @@ hist_trigger_actions(struct hist_trigger_data *hist_d= ata, * on the stack, so when the histogram trigger is initialized * a percpu array of 4 hist_pad structures is allocated. * This will cover every context from normal, softirq, irq and NMI - * in the very unlikely event that a tigger happens at each of + * in the very unlikely event that a trigger happens at each of * these contexts and interrupts a currently active trigger. */ struct hist_pad { diff --git a/kernel/trace/trace_events_synth.c b/kernel/trace/trace_events_= synth.c index 2f19bbe73d27..4554c458b78c 100644 --- a/kernel/trace/trace_events_synth.c +++ b/kernel/trace/trace_events_synth.c @@ -375,7 +375,6 @@ static enum print_line_t print_synth_event(struct trace= _iterator *iter, n_u64++; } else { trace_seq_printf(s, print_fmt, se->fields[i]->name, - STR_VAR_LEN_MAX, (char *)&entry->fields[n_u64].as_u64, i =3D=3D se->n_fields - 1 ? "" : " "); n_u64 +=3D STR_VAR_LEN_MAX / sizeof(u64); diff --git a/kernel/trace/trace_events_trigger.c b/kernel/trace/trace_event= s_trigger.c index 96aad82b1628..06b75bcfc7b8 100644 --- a/kernel/trace/trace_events_trigger.c +++ b/kernel/trace/trace_events_trigger.c @@ -732,7 +732,7 @@ static void unregister_trigger(char *glob, * param - text following cmd and ':' and stripped of filter * filter - the optional filter text following (and including= ) 'if' * - * To illustrate the use of these componenents, here are some concrete + * To illustrate the use of these components, here are some concrete * examples. For the following triggers: * * echo 'traceon:5 if pid =3D=3D 0' > trigger diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_u= ser.c index b15854c75d4f..dca6e50b3b21 100644 --- a/kernel/trace/trace_events_user.c +++ b/kernel/trace/trace_events_user.c @@ -1041,7 +1041,7 @@ static int user_field_array_size(const char *type) =20 static int user_field_size(const char *type) { - /* long is not allowed from a user, since it's ambigious in size */ + /* long is not allowed from a user, since it's ambiguous in size */ if (strcmp(type, "s64") =3D=3D 0) return sizeof(s64); if (strcmp(type, "u64") =3D=3D 0) @@ -1079,7 +1079,7 @@ static int user_field_size(const char *type) if (str_has_prefix(type, "__rel_loc ")) return sizeof(u32); =20 - /* Uknown basic type, error */ + /* Unknown basic type, error */ return -EINVAL; } =20 @@ -2465,7 +2465,7 @@ static long user_events_ioctl_reg(struct user_event_f= ile_info *info, /* * Prevent users from using the same address and bit multiple times * within the same mm address space. This can cause unexpected behavior - * for user processes that is far easier to debug if this is explictly + * for user processes that is far easier to debug if this is explicitly * an error upon registering. */ if (current_user_event_enabler_exists((unsigned long)reg.enable_addr, diff --git a/kernel/trace/trace_osnoise.c b/kernel/trace/trace_osnoise.c index a9962d4497e8..827104d00bc0 100644 --- a/kernel/trace/trace_osnoise.c +++ b/kernel/trace/trace_osnoise.c @@ -329,7 +329,7 @@ static struct osnoise_data { u64 print_stack; /* print IRQ stack if total > */ int timerlat_tracer; /* timerlat tracer */ #endif - bool tainted; /* infor users and developers about a problem */ + bool tainted; /* info users and developers about a problem */ } osnoise_data =3D { .sample_period =3D DEFAULT_SAMPLE_PERIOD, .sample_runtime =3D DEFAULT_SAMPLE_RUNTIME, @@ -738,7 +738,7 @@ cond_move_thread_delta_start(struct osnoise_variables *= osn_var, u64 duration) /* * get_int_safe_duration - Get the duration of a window * - * The irq, softirq and thread varaibles need to have its duration without + * The irq, softirq and thread variables need to have its duration without * the interference from higher priority interrupts. Instead of keeping a * variable to discount the interrupt interference from these variables, t= he * starting time of these variables are pushed forward with the interrupt's @@ -1460,7 +1460,7 @@ static int run_osnoise(void) stop_in =3D osnoise_data.stop_tracing * NSEC_PER_USEC; =20 /* - * Start timestemp + * Start timestamp */ start =3D time_get(); =20 @@ -1881,7 +1881,7 @@ static int timerlat_main(void *data) tlat->kthread =3D current; osn_var->pid =3D current->pid; /* - * Anotate the arrival time. + * Annotate the arrival time. */ tlat->abs_period =3D hrtimer_cb_get_time(&tlat->timer); =20 @@ -1978,7 +1978,7 @@ static void stop_per_cpu_kthreads(void) } =20 /* - * start_kthread - Start a workload tread + * start_kthread - Start a workload thread */ static int start_kthread(unsigned int cpu) { @@ -2705,7 +2705,7 @@ static int osnoise_create_cpu_timerlat_fd(struct dent= ry *top_dir) * Why not using tracing instance per_cpu/ dir? * * Because osnoise/timerlat have a single workload, having - * multiple files like these are wast of memory. + * multiple files like these are waste of memory. */ per_cpu =3D tracefs_create_dir("per_cpu", top_dir); if (!per_cpu) diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c index 5cbdc423afeb..abf7cf2b6b65 100644 --- a/kernel/trace/trace_probe.c +++ b/kernel/trace/trace_probe.c @@ -516,7 +516,7 @@ static void clear_btf_context(struct traceprobe_parse_c= ontext *ctx) } } =20 -/* Return 1 if the field separater is arrow operator ('->') */ +/* Return 1 if the field separator is arrow operator ('->') */ static int split_next_field(char *varname, char **next_field, struct traceprobe_parse_context *ctx) { diff --git a/kernel/trace/trace_seq.c b/kernel/trace/trace_seq.c index c158d65a8a88..32684ef4fb9d 100644 --- a/kernel/trace/trace_seq.c +++ b/kernel/trace/trace_seq.c @@ -15,7 +15,7 @@ *=20 * A write to the buffer will either succeed or fail. That is, unlike * sprintf() there will not be a partial write (well it may write into - * the buffer but it wont update the pointers). This allows users to + * the buffer but it won't update the pointers). This allows users to * try to write something into the trace_seq buffer and if it fails * they can flush it and try again. *