public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, Mark Rutland <mark.rutland@arm.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	"Masami Hiramatsu (Google)" <mhiramat@kernel.org>,
	"Steven Rostedt (Google)" <rostedt@goodmis.org>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.12 039/154] tracing: Switch trace.c code over to use guard()
Date: Mon, 24 Feb 2025 15:33:58 +0100	[thread overview]
Message-ID: <20250224142608.622676836@linuxfoundation.org> (raw)
In-Reply-To: <20250224142607.058226288@linuxfoundation.org>

6.12-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Steven Rostedt <rostedt@goodmis.org>

[ Upstream commit d33b10c0c73adca00f72bf4a153a07b7f5f34715 ]

There are several functions in trace.c that have "goto out;" or
equivalent on error in order to release locks or free values that were
allocated. This can be error prone or just simply make the code more
complex.

Switch every location that ends with unlocking a mutex or freeing on error
over to using the guard(mutex)() and __free() infrastructure to let the
compiler worry about releasing locks. This makes the code easier to read
and understand.

There's one place that should probably return an error but instead return
0. This does not change the return as the only changes are to do the
conversion without changing the logic. Fixing that location will have to
come later.

Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Link: https://lore.kernel.org/20241224221413.7b8c68c3@batman.local.home
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Stable-dep-of: 60b8f711143d ("tracing: Have the error of __tracing_resize_ring_buffer() passed to user")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 kernel/trace/trace.c | 266 +++++++++++++++----------------------------
 1 file changed, 94 insertions(+), 172 deletions(-)

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index bfc4ac265c2c3..f03eef90de54c 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -26,6 +26,7 @@
 #include <linux/hardirq.h>
 #include <linux/linkage.h>
 #include <linux/uaccess.h>
+#include <linux/cleanup.h>
 #include <linux/vmalloc.h>
 #include <linux/ftrace.h>
 #include <linux/module.h>
@@ -535,19 +536,16 @@ LIST_HEAD(ftrace_trace_arrays);
 int trace_array_get(struct trace_array *this_tr)
 {
 	struct trace_array *tr;
-	int ret = -ENODEV;
 
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&trace_types_lock);
 	list_for_each_entry(tr, &ftrace_trace_arrays, list) {
 		if (tr == this_tr) {
 			tr->ref++;
-			ret = 0;
-			break;
+			return 0;
 		}
 	}
-	mutex_unlock(&trace_types_lock);
 
-	return ret;
+	return -ENODEV;
 }
 
 static void __trace_array_put(struct trace_array *this_tr)
@@ -1456,22 +1454,20 @@ EXPORT_SYMBOL_GPL(tracing_snapshot_alloc);
 int tracing_snapshot_cond_enable(struct trace_array *tr, void *cond_data,
 				 cond_update_fn_t update)
 {
-	struct cond_snapshot *cond_snapshot;
-	int ret = 0;
+	struct cond_snapshot *cond_snapshot __free(kfree) =
+		kzalloc(sizeof(*cond_snapshot), GFP_KERNEL);
+	int ret;
 
-	cond_snapshot = kzalloc(sizeof(*cond_snapshot), GFP_KERNEL);
 	if (!cond_snapshot)
 		return -ENOMEM;
 
 	cond_snapshot->cond_data = cond_data;
 	cond_snapshot->update = update;
 
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&trace_types_lock);
 
-	if (tr->current_trace->use_max_tr) {
-		ret = -EBUSY;
-		goto fail_unlock;
-	}
+	if (tr->current_trace->use_max_tr)
+		return -EBUSY;
 
 	/*
 	 * The cond_snapshot can only change to NULL without the
@@ -1481,29 +1477,20 @@ int tracing_snapshot_cond_enable(struct trace_array *tr, void *cond_data,
 	 * do safely with only holding the trace_types_lock and not
 	 * having to take the max_lock.
 	 */
-	if (tr->cond_snapshot) {
-		ret = -EBUSY;
-		goto fail_unlock;
-	}
+	if (tr->cond_snapshot)
+		return -EBUSY;
 
 	ret = tracing_arm_snapshot_locked(tr);
 	if (ret)
-		goto fail_unlock;
+		return ret;
 
 	local_irq_disable();
 	arch_spin_lock(&tr->max_lock);
-	tr->cond_snapshot = cond_snapshot;
+	tr->cond_snapshot = no_free_ptr(cond_snapshot);
 	arch_spin_unlock(&tr->max_lock);
 	local_irq_enable();
 
-	mutex_unlock(&trace_types_lock);
-
-	return ret;
-
- fail_unlock:
-	mutex_unlock(&trace_types_lock);
-	kfree(cond_snapshot);
-	return ret;
+	return 0;
 }
 EXPORT_SYMBOL_GPL(tracing_snapshot_cond_enable);
 
@@ -2216,10 +2203,10 @@ static __init int init_trace_selftests(void)
 
 	selftests_can_run = true;
 
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&trace_types_lock);
 
 	if (list_empty(&postponed_selftests))
-		goto out;
+		return 0;
 
 	pr_info("Running postponed tracer tests:\n");
 
@@ -2248,9 +2235,6 @@ static __init int init_trace_selftests(void)
 	}
 	tracing_selftest_running = false;
 
- out:
-	mutex_unlock(&trace_types_lock);
-
 	return 0;
 }
 core_initcall(init_trace_selftests);
@@ -2818,7 +2802,7 @@ int tracepoint_printk_sysctl(const struct ctl_table *table, int write,
 	int save_tracepoint_printk;
 	int ret;
 
-	mutex_lock(&tracepoint_printk_mutex);
+	guard(mutex)(&tracepoint_printk_mutex);
 	save_tracepoint_printk = tracepoint_printk;
 
 	ret = proc_dointvec(table, write, buffer, lenp, ppos);
@@ -2831,16 +2815,13 @@ int tracepoint_printk_sysctl(const struct ctl_table *table, int write,
 		tracepoint_printk = 0;
 
 	if (save_tracepoint_printk == tracepoint_printk)
-		goto out;
+		return ret;
 
 	if (tracepoint_printk)
 		static_key_enable(&tracepoint_printk_key.key);
 	else
 		static_key_disable(&tracepoint_printk_key.key);
 
- out:
-	mutex_unlock(&tracepoint_printk_mutex);
-
 	return ret;
 }
 
@@ -5150,7 +5131,8 @@ static int tracing_trace_options_show(struct seq_file *m, void *v)
 	u32 tracer_flags;
 	int i;
 
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&trace_types_lock);
+
 	tracer_flags = tr->current_trace->flags->val;
 	trace_opts = tr->current_trace->flags->opts;
 
@@ -5167,7 +5149,6 @@ static int tracing_trace_options_show(struct seq_file *m, void *v)
 		else
 			seq_printf(m, "no%s\n", trace_opts[i].name);
 	}
-	mutex_unlock(&trace_types_lock);
 
 	return 0;
 }
@@ -5832,7 +5813,7 @@ trace_insert_eval_map_file(struct module *mod, struct trace_eval_map **start,
 		return;
 	}
 
-	mutex_lock(&trace_eval_mutex);
+	guard(mutex)(&trace_eval_mutex);
 
 	if (!trace_eval_maps)
 		trace_eval_maps = map_array;
@@ -5856,8 +5837,6 @@ trace_insert_eval_map_file(struct module *mod, struct trace_eval_map **start,
 		map_array++;
 	}
 	memset(map_array, 0, sizeof(*map_array));
-
-	mutex_unlock(&trace_eval_mutex);
 }
 
 static void trace_create_eval_file(struct dentry *d_tracer)
@@ -6021,23 +6000,18 @@ ssize_t tracing_resize_ring_buffer(struct trace_array *tr,
 {
 	int ret;
 
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&trace_types_lock);
 
 	if (cpu_id != RING_BUFFER_ALL_CPUS) {
 		/* make sure, this cpu is enabled in the mask */
-		if (!cpumask_test_cpu(cpu_id, tracing_buffer_mask)) {
-			ret = -EINVAL;
-			goto out;
-		}
+		if (!cpumask_test_cpu(cpu_id, tracing_buffer_mask))
+			return -EINVAL;
 	}
 
 	ret = __tracing_resize_ring_buffer(tr, size, cpu_id);
 	if (ret < 0)
 		ret = -ENOMEM;
 
-out:
-	mutex_unlock(&trace_types_lock);
-
 	return ret;
 }
 
@@ -6129,9 +6103,9 @@ int tracing_set_tracer(struct trace_array *tr, const char *buf)
 #ifdef CONFIG_TRACER_MAX_TRACE
 	bool had_max_tr;
 #endif
-	int ret = 0;
+	int ret;
 
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&trace_types_lock);
 
 	update_last_data(tr);
 
@@ -6139,7 +6113,7 @@ int tracing_set_tracer(struct trace_array *tr, const char *buf)
 		ret = __tracing_resize_ring_buffer(tr, trace_buf_size,
 						RING_BUFFER_ALL_CPUS);
 		if (ret < 0)
-			goto out;
+			return ret;
 		ret = 0;
 	}
 
@@ -6147,12 +6121,11 @@ int tracing_set_tracer(struct trace_array *tr, const char *buf)
 		if (strcmp(t->name, buf) == 0)
 			break;
 	}
-	if (!t) {
-		ret = -EINVAL;
-		goto out;
-	}
+	if (!t)
+		return -EINVAL;
+
 	if (t == tr->current_trace)
-		goto out;
+		return 0;
 
 #ifdef CONFIG_TRACER_SNAPSHOT
 	if (t->use_max_tr) {
@@ -6163,27 +6136,23 @@ int tracing_set_tracer(struct trace_array *tr, const char *buf)
 		arch_spin_unlock(&tr->max_lock);
 		local_irq_enable();
 		if (ret)
-			goto out;
+			return ret;
 	}
 #endif
 	/* Some tracers won't work on kernel command line */
 	if (system_state < SYSTEM_RUNNING && t->noboot) {
 		pr_warn("Tracer '%s' is not allowed on command line, ignored\n",
 			t->name);
-		goto out;
+		return 0;
 	}
 
 	/* Some tracers are only allowed for the top level buffer */
-	if (!trace_ok_for_array(t, tr)) {
-		ret = -EINVAL;
-		goto out;
-	}
+	if (!trace_ok_for_array(t, tr))
+		return -EINVAL;
 
 	/* If trace pipe files are being read, we can't change the tracer */
-	if (tr->trace_ref) {
-		ret = -EBUSY;
-		goto out;
-	}
+	if (tr->trace_ref)
+		return -EBUSY;
 
 	trace_branch_disable();
 
@@ -6214,7 +6183,7 @@ int tracing_set_tracer(struct trace_array *tr, const char *buf)
 	if (!had_max_tr && t->use_max_tr) {
 		ret = tracing_arm_snapshot_locked(tr);
 		if (ret)
-			goto out;
+			return ret;
 	}
 #else
 	tr->current_trace = &nop_trace;
@@ -6227,17 +6196,15 @@ int tracing_set_tracer(struct trace_array *tr, const char *buf)
 			if (t->use_max_tr)
 				tracing_disarm_snapshot(tr);
 #endif
-			goto out;
+			return ret;
 		}
 	}
 
 	tr->current_trace = t;
 	tr->current_trace->enabled++;
 	trace_branch_enable(tr);
- out:
-	mutex_unlock(&trace_types_lock);
 
-	return ret;
+	return 0;
 }
 
 static ssize_t
@@ -6315,22 +6282,18 @@ tracing_thresh_write(struct file *filp, const char __user *ubuf,
 	struct trace_array *tr = filp->private_data;
 	int ret;
 
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&trace_types_lock);
 	ret = tracing_nsecs_write(&tracing_thresh, ubuf, cnt, ppos);
 	if (ret < 0)
-		goto out;
+		return ret;
 
 	if (tr->current_trace->update_thresh) {
 		ret = tr->current_trace->update_thresh(tr);
 		if (ret < 0)
-			goto out;
+			return ret;
 	}
 
-	ret = cnt;
-out:
-	mutex_unlock(&trace_types_lock);
-
-	return ret;
+	return cnt;
 }
 
 #ifdef CONFIG_TRACER_MAX_TRACE
@@ -6549,31 +6512,29 @@ tracing_read_pipe(struct file *filp, char __user *ubuf,
 	 * This is just a matter of traces coherency, the ring buffer itself
 	 * is protected.
 	 */
-	mutex_lock(&iter->mutex);
+	guard(mutex)(&iter->mutex);
 
 	/* return any leftover data */
 	sret = trace_seq_to_user(&iter->seq, ubuf, cnt);
 	if (sret != -EBUSY)
-		goto out;
+		return sret;
 
 	trace_seq_init(&iter->seq);
 
 	if (iter->trace->read) {
 		sret = iter->trace->read(iter, filp, ubuf, cnt, ppos);
 		if (sret)
-			goto out;
+			return sret;
 	}
 
 waitagain:
 	sret = tracing_wait_pipe(filp);
 	if (sret <= 0)
-		goto out;
+		return sret;
 
 	/* stop when tracing is finished */
-	if (trace_empty(iter)) {
-		sret = 0;
-		goto out;
-	}
+	if (trace_empty(iter))
+		return 0;
 
 	if (cnt >= TRACE_SEQ_BUFFER_SIZE)
 		cnt = TRACE_SEQ_BUFFER_SIZE - 1;
@@ -6637,9 +6598,6 @@ tracing_read_pipe(struct file *filp, char __user *ubuf,
 	if (sret == -EBUSY)
 		goto waitagain;
 
-out:
-	mutex_unlock(&iter->mutex);
-
 	return sret;
 }
 
@@ -7231,25 +7189,19 @@ u64 tracing_event_time_stamp(struct trace_buffer *buffer, struct ring_buffer_eve
  */
 int tracing_set_filter_buffering(struct trace_array *tr, bool set)
 {
-	int ret = 0;
-
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&trace_types_lock);
 
 	if (set && tr->no_filter_buffering_ref++)
-		goto out;
+		return 0;
 
 	if (!set) {
-		if (WARN_ON_ONCE(!tr->no_filter_buffering_ref)) {
-			ret = -EINVAL;
-			goto out;
-		}
+		if (WARN_ON_ONCE(!tr->no_filter_buffering_ref))
+			return -EINVAL;
 
 		--tr->no_filter_buffering_ref;
 	}
- out:
-	mutex_unlock(&trace_types_lock);
 
-	return ret;
+	return 0;
 }
 
 struct ftrace_buffer_info {
@@ -7325,12 +7277,10 @@ tracing_snapshot_write(struct file *filp, const char __user *ubuf, size_t cnt,
 	if (ret)
 		return ret;
 
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&trace_types_lock);
 
-	if (tr->current_trace->use_max_tr) {
-		ret = -EBUSY;
-		goto out;
-	}
+	if (tr->current_trace->use_max_tr)
+		return -EBUSY;
 
 	local_irq_disable();
 	arch_spin_lock(&tr->max_lock);
@@ -7339,24 +7289,20 @@ tracing_snapshot_write(struct file *filp, const char __user *ubuf, size_t cnt,
 	arch_spin_unlock(&tr->max_lock);
 	local_irq_enable();
 	if (ret)
-		goto out;
+		return ret;
 
 	switch (val) {
 	case 0:
-		if (iter->cpu_file != RING_BUFFER_ALL_CPUS) {
-			ret = -EINVAL;
-			break;
-		}
+		if (iter->cpu_file != RING_BUFFER_ALL_CPUS)
+			return -EINVAL;
 		if (tr->allocated_snapshot)
 			free_snapshot(tr);
 		break;
 	case 1:
 /* Only allow per-cpu swap if the ring buffer supports it */
 #ifndef CONFIG_RING_BUFFER_ALLOW_SWAP
-		if (iter->cpu_file != RING_BUFFER_ALL_CPUS) {
-			ret = -EINVAL;
-			break;
-		}
+		if (iter->cpu_file != RING_BUFFER_ALL_CPUS)
+			return -EINVAL;
 #endif
 		if (tr->allocated_snapshot)
 			ret = resize_buffer_duplicate_size(&tr->max_buffer,
@@ -7364,7 +7310,7 @@ tracing_snapshot_write(struct file *filp, const char __user *ubuf, size_t cnt,
 
 		ret = tracing_arm_snapshot_locked(tr);
 		if (ret)
-			break;
+			return ret;
 
 		/* Now, we're going to swap */
 		if (iter->cpu_file == RING_BUFFER_ALL_CPUS) {
@@ -7391,8 +7337,7 @@ tracing_snapshot_write(struct file *filp, const char __user *ubuf, size_t cnt,
 		*ppos += cnt;
 		ret = cnt;
 	}
-out:
-	mutex_unlock(&trace_types_lock);
+
 	return ret;
 }
 
@@ -7778,12 +7723,11 @@ void tracing_log_err(struct trace_array *tr,
 
 	len += sizeof(CMD_PREFIX) + 2 * sizeof("\n") + strlen(cmd) + 1;
 
-	mutex_lock(&tracing_err_log_lock);
+	guard(mutex)(&tracing_err_log_lock);
+
 	err = get_tracing_log_err(tr, len);
-	if (PTR_ERR(err) == -ENOMEM) {
-		mutex_unlock(&tracing_err_log_lock);
+	if (PTR_ERR(err) == -ENOMEM)
 		return;
-	}
 
 	snprintf(err->loc, TRACING_LOG_LOC_MAX, "%s: error: ", loc);
 	snprintf(err->cmd, len, "\n" CMD_PREFIX "%s\n", cmd);
@@ -7794,7 +7738,6 @@ void tracing_log_err(struct trace_array *tr,
 	err->info.ts = local_clock();
 
 	list_add_tail(&err->list, &tr->err_log);
-	mutex_unlock(&tracing_err_log_lock);
 }
 
 static void clear_tracing_err_log(struct trace_array *tr)
@@ -9535,20 +9478,17 @@ static int instance_mkdir(const char *name)
 	struct trace_array *tr;
 	int ret;
 
-	mutex_lock(&event_mutex);
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&event_mutex);
+	guard(mutex)(&trace_types_lock);
 
 	ret = -EEXIST;
 	if (trace_array_find(name))
-		goto out_unlock;
+		return -EEXIST;
 
 	tr = trace_array_create(name);
 
 	ret = PTR_ERR_OR_ZERO(tr);
 
-out_unlock:
-	mutex_unlock(&trace_types_lock);
-	mutex_unlock(&event_mutex);
 	return ret;
 }
 
@@ -9598,24 +9538,23 @@ struct trace_array *trace_array_get_by_name(const char *name, const char *system
 {
 	struct trace_array *tr;
 
-	mutex_lock(&event_mutex);
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&event_mutex);
+	guard(mutex)(&trace_types_lock);
 
 	list_for_each_entry(tr, &ftrace_trace_arrays, list) {
-		if (tr->name && strcmp(tr->name, name) == 0)
-			goto out_unlock;
+		if (tr->name && strcmp(tr->name, name) == 0) {
+			tr->ref++;
+			return tr;
+		}
 	}
 
 	tr = trace_array_create_systems(name, systems, 0, 0);
 
 	if (IS_ERR(tr))
 		tr = NULL;
-out_unlock:
-	if (tr)
+	else
 		tr->ref++;
 
-	mutex_unlock(&trace_types_lock);
-	mutex_unlock(&event_mutex);
 	return tr;
 }
 EXPORT_SYMBOL_GPL(trace_array_get_by_name);
@@ -9666,48 +9605,36 @@ static int __remove_instance(struct trace_array *tr)
 int trace_array_destroy(struct trace_array *this_tr)
 {
 	struct trace_array *tr;
-	int ret;
 
 	if (!this_tr)
 		return -EINVAL;
 
-	mutex_lock(&event_mutex);
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&event_mutex);
+	guard(mutex)(&trace_types_lock);
 
-	ret = -ENODEV;
 
 	/* Making sure trace array exists before destroying it. */
 	list_for_each_entry(tr, &ftrace_trace_arrays, list) {
-		if (tr == this_tr) {
-			ret = __remove_instance(tr);
-			break;
-		}
+		if (tr == this_tr)
+			return __remove_instance(tr);
 	}
 
-	mutex_unlock(&trace_types_lock);
-	mutex_unlock(&event_mutex);
-
-	return ret;
+	return -ENODEV;
 }
 EXPORT_SYMBOL_GPL(trace_array_destroy);
 
 static int instance_rmdir(const char *name)
 {
 	struct trace_array *tr;
-	int ret;
 
-	mutex_lock(&event_mutex);
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&event_mutex);
+	guard(mutex)(&trace_types_lock);
 
-	ret = -ENODEV;
 	tr = trace_array_find(name);
-	if (tr)
-		ret = __remove_instance(tr);
-
-	mutex_unlock(&trace_types_lock);
-	mutex_unlock(&event_mutex);
+	if (!tr)
+		return -ENODEV;
 
-	return ret;
+	return __remove_instance(tr);
 }
 
 static __init void create_trace_instances(struct dentry *d_tracer)
@@ -9720,19 +9647,16 @@ static __init void create_trace_instances(struct dentry *d_tracer)
 	if (MEM_FAIL(!trace_instance_dir, "Failed to create instances directory\n"))
 		return;
 
-	mutex_lock(&event_mutex);
-	mutex_lock(&trace_types_lock);
+	guard(mutex)(&event_mutex);
+	guard(mutex)(&trace_types_lock);
 
 	list_for_each_entry(tr, &ftrace_trace_arrays, list) {
 		if (!tr->name)
 			continue;
 		if (MEM_FAIL(trace_array_create_dir(tr) < 0,
 			     "Failed to create instance directory\n"))
-			break;
+			return;
 	}
-
-	mutex_unlock(&trace_types_lock);
-	mutex_unlock(&event_mutex);
 }
 
 static void
@@ -9946,7 +9870,7 @@ static void trace_module_remove_evals(struct module *mod)
 	if (!mod->num_trace_evals)
 		return;
 
-	mutex_lock(&trace_eval_mutex);
+	guard(mutex)(&trace_eval_mutex);
 
 	map = trace_eval_maps;
 
@@ -9958,12 +9882,10 @@ static void trace_module_remove_evals(struct module *mod)
 		map = map->tail.next;
 	}
 	if (!map)
-		goto out;
+		return;
 
 	*last = trace_eval_jmp_to_tail(map)->tail.next;
 	kfree(map);
- out:
-	mutex_unlock(&trace_eval_mutex);
 }
 #else
 static inline void trace_module_remove_evals(struct module *mod) { }
-- 
2.39.5




  parent reply	other threads:[~2025-02-24 14:46 UTC|newest]

Thread overview: 162+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-24 14:33 [PATCH 6.12 000/154] 6.12.17-rc1 review Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 001/154] arm64: mte: Do not allow PROT_MTE on MAP_HUGETLB user mappings Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 002/154] drm/xe/oa: Separate batch submission from waiting for completion Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 003/154] drm/xe/oa/uapi: Define and parse OA sync properties Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 004/154] drm/xe/oa: Add input fence dependencies Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 005/154] xe/oa: Fix query mode of operation for OAR/OAC Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 006/154] btrfs: do not assume the full page range is not dirty in extent_writepage_io() Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 007/154] btrfs: move the delalloc range bitmap search into extent_io.c Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 008/154] btrfs: mark all dirty sectors as locked inside writepage_delalloc() Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 009/154] btrfs: remove unused btrfs_folio_start_writer_lock() Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 010/154] btrfs: unify to use writer locks for subpage locking Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 011/154] btrfs: rename btrfs_folio_(set|start|end)_writer_lock() Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 012/154] btrfs: use btrfs_inode in extent_writepage() Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 013/154] btrfs: fix double accounting race when btrfs_run_delalloc_range() failed Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 014/154] btrfs: fix double accounting race when extent_writepage_io() failed Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 015/154] KVM: x86: Get vcpu->arch.apic_base directly and drop kvm_get_apic_base() Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 016/154] KVM: x86: Inline kvm_get_apic_mode() in lapic.h Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 017/154] KVM: nVMX: Defer SVI update to vmcs01 on EOI when L2 is active w/o VID Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 018/154] drm/amd/display: Refactoring if and endif statements to enable DC_LOGGER Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 019/154] drm/amd/display: update dcn351 used clock offset Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 020/154] drm/amd/display: Correct register address in dcn35 Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 021/154] Bluetooth: qca: Update firmware-name to support board specific nvm Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 022/154] Bluetooth: qca: Fix poor RF performance for WCN6855 Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 023/154] Input: serio - define serio_pause_rx guard to pause and resume serio ports Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 024/154] Input: synaptics - fix crash when enabling pass-through port Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 025/154] ASoC: renesas: rz-ssi: Terminate all the DMA transactions Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 026/154] ASoC: renesas: rz-ssi: Add a check for negative sample_space Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 027/154] PCI: Make pcim_request_all_regions() a public function Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 028/154] PCI: Export pci_intx_unmanaged() and pcim_intx() Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 029/154] PCI: Remove devres from pci_intx() Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 030/154] PCI: Restore original INTX_DISABLE bit by pcim_intx() Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 031/154] arm64: dts: mediatek: mt8183-pumpkin: add HDMI support Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 032/154] arm64: dts: mediatek: mt8183: Disable DSI display output by default Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 033/154] accel/ivpu: Limit FW version string length Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 034/154] accel/ivpu: Add coredump support Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 035/154] accel/ivpu: Add FW state dump on TDR Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 036/154] accel/ivpu: Fix error handling in recovery/reset Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 037/154] drm/amdkfd: Move gfx12 trap handler to separate file Greg Kroah-Hartman
2025-02-24 14:33 ` [PATCH 6.12 038/154] drm/amdkfd: Ensure consistent barrier state saved in gfx12 trap handler Greg Kroah-Hartman
2025-02-24 14:33 ` Greg Kroah-Hartman [this message]
2025-02-24 14:33 ` [PATCH 6.12 040/154] tracing: Have the error of __tracing_resize_ring_buffer() passed to user Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 041/154] USB: gadget: f_midi: f_midi_complete to call queue_work Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 042/154] sched_ext: Factor out move_task_between_dsqs() from scx_dispatch_from_dsq() Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 043/154] sched_ext: Fix migration disabled handling in targeted dispatches Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 044/154] ASoC: rockchip: i2s-tdm: fix shift config for SND_SOC_DAIFMT_DSP_[AB] Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 045/154] ASoC: SOF: ipc4-topology: Harden loops for looking up ALH copiers Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 046/154] powerpc/code-patching: Disable KASAN report during patching via temporary mm Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 047/154] powerpc/64s: Rewrite __real_pte() and __rpte_to_hidx() as static inline Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 048/154] ALSA: hda/realtek: Fixup ALC225 depop procedure Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 049/154] powerpc/code-patching: Fix KASAN hit by not flagging text patching area as VM_ALLOC Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 050/154] ASoC: imx-audmix: remove cpu_mclk which is from cpu dai device Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 051/154] vsock/virtio: fix variables initialization during resuming Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 052/154] geneve: Fix use-after-free in geneve_find_dev() Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 053/154] ALSA: hda/cirrus: Correct the full scale volume set logic Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 054/154] net/sched: cls_api: fix error handling causing NULL dereference Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 055/154] ALSA: seq: Drop UMP events when no UMP-conversion is set Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 056/154] s390/ism: add release function for struct device Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 057/154] ibmvnic: Add stat for tx direct vs tx batched Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 058/154] ibmvnic: Dont reference skb after sending to VIOS Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 059/154] sockmap, vsock: For connectible sockets allow only connected Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 060/154] vsock/bpf: Warn on socket without transport Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 061/154] tcp: adjust rcvq_space after updating scaling ratio Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 062/154] net: pse-pd: Avoid setting max_uA in regulator constraints Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 063/154] net: pse-pd: Use power limit at driver side instead of current limit Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 064/154] net: pse-pd: pd692x0: Fix power limit retrieval Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 065/154] gtp: Suppress list corruption splat in gtp_net_exit_batch_rtnl() Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 066/154] geneve: Suppress list corruption splat in geneve_destroy_tunnels() Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 067/154] flow_dissector: Fix handling of mixed port and port-range keys Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 068/154] flow_dissector: Fix port range key handling in BPF conversion Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 069/154] net: Add non-RCU dev_getbyhwaddr() helper Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 070/154] arp: switch to dev_getbyhwaddr() in arp_req_set_public() Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 071/154] net: axienet: Set mac_managed_pm Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 072/154] tcp: drop secpath at the same time as we currently drop dst Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 073/154] net: allow small head cache usage with large MAX_SKB_FRAGS values Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 074/154] bpf, test_run: Fix use-after-free issue in eth_skb_pkt_type() Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 075/154] bpf: unify VM_WRITE vs VM_MAYWRITE use in BPF map mmaping logic Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 076/154] bpf: avoid holding freeze_mutex during mmap operation Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 077/154] strparser: Add read_sock callback Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 078/154] bpf: Fix wrong copied_seq calculation Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 079/154] bpf: Disable non stream socket for strparser Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 080/154] bpf: Fix deadlock when freeing cgroup storage Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 081/154] arm64: dts: rockchip: Fix lcdpwr_en pin for Cool Pi GenBook Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 082/154] power: supply: da9150-fg: fix potential overflow Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 083/154] power: supply: axp20x_battery: Fix fault handling for AXP717 Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 084/154] selftests/bpf: Add tests for raw_tp null handling Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 085/154] net: Add rx_skb of kfree_skb to raw_tp_null_args[] Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 086/154] bpf: Fix softlockup in arena_map_free on 64k page kernel Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 087/154] arm64: dts: rockchip: adjust SMMU interrupt type on rk3588 Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 088/154] firmware: arm_scmi: imx: Correct tx size of scmi_imx_misc_ctrl_set Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 089/154] md/raid*: Fix the set_queue_limits implementations Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 090/154] firmware: imx: IMX_SCMI_MISC_DRV should depend on ARCH_MXC Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 091/154] platform: cznic: CZNIC_PLATFORMS should depend on ARCH_MVEBU Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 092/154] nouveau/svm: fix missing folio unlock + put after make_device_exclusive_range() Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 093/154] drm/msm: Avoid rounding up to one jiffy Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 094/154] drm/msm/dpu: skip watchdog timer programming through TOP on >= SM8450 Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 095/154] drm/msm/dpu: enable DPU_WB_INPUT_CTRL for DPU 5.x Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 096/154] drm/msm/dpu: Dont leak bits_per_component into random DSC_ENC fields Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 097/154] drm/msm/dsi/phy: Protect PHY_CMN_CLK_CFG0 updated from driver side Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 098/154] drm/msm/dsi/phy: Protect PHY_CMN_CLK_CFG1 against clock driver Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 099/154] drm/msm/dsi/phy: Do not overwite PHY_CMN_CLK_CFG1 when choosing bitclk source Greg Kroah-Hartman
2025-02-24 14:34 ` [PATCH 6.12 100/154] nvme: tcp: Fix compilation warning with W=1 Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 101/154] nvme-tcp: fix connect failure on receiving partial ICResp PDU Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 102/154] nvme/ioctl: add missing space in err message Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 103/154] bpf: skip non exist keys in generic_map_lookup_batch Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 104/154] drm/nouveau/pmu: Fix gp10b firmware guard Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 105/154] irqchip/jcore-aic, clocksource/drivers/jcore: Fix jcore-pit interrupt request Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 106/154] drm: panel: jd9365da-h3: fix reset signal polarity Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 107/154] drm/msm/dpu: Disable dither in phys encoder cleanup Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 108/154] drm/i915: Make sure all planes in use by the joiner have their crtc included Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 109/154] drm/i915/dp: Fix error handling during 128b/132b link training Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 110/154] drm/i915/ddi: Fix HDMI port width programming in DDI_BUF_CTL Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 111/154] drm/i915/gt: Use spin_lock_irqsave() in interruptible context Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 112/154] io_uring/rw: forbid multishot async reads Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 113/154] io_uring: prevent opcode speculation Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 114/154] gpiolib: check the return value of gpio_chip::get_direction() Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 115/154] gpiolib: protect gpio_chip with SRCU in array_info paths in multi get/set Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 116/154] tee: optee: Fix supplicant wait loop Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 117/154] drop_monitor: fix incorrect initialization order Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 118/154] mm/migrate_device: dont add folio to be freed to LRU in migrate_device_finalize() Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 119/154] arm64: dts: rockchip: Fix broken tsadc pinctrl names for rk3588 Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 120/154] arm64: dts: rockchip: Move uart5 pin configuration to px30 ringneck SoM Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 121/154] arm64: dts: rockchip: Disable DMA for uart5 on px30-ringneck Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 122/154] soc: loongson: loongson2_guts: Add check for devm_kstrdup() Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 123/154] s390/boot: Fix ESSA detection Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 124/154] xfs: fix online repair probing when CONFIG_XFS_ONLINE_REPAIR=n Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 125/154] lib/iov_iter: fix import_iovec_ubuf iovec management Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 126/154] smb: client: fix chmod(2) regression with ATTR_READONLY Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 127/154] nfp: bpf: Add check for nfp_app_ctrl_msg_alloc() Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 128/154] gve: set xdp redirect target only when it is available Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 129/154] ASoC: SOF: stream-ipc: Check for cstream nullity in sof_ipc_msg_data() Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 130/154] ASoC: fsl_micfil: Enable default case in micfil_set_quality() Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 131/154] ALSA: hda: Add error check for snd_ctl_rename_id() in snd_hda_create_dig_out_ctls() Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 132/154] ALSA: hda/conexant: Add quirk for HP ProBook 450 G4 mute LED Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 133/154] ASoC: SOF: pcm: Clear the susbstream pointer to NULL on close Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 134/154] acct: perform last write from workqueue Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 135/154] acct: block access to kernel internal filesystems Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 136/154] mm,madvise,hugetlb: check for 0-length range after end address adjustment Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 137/154] mtd: spi-nor: sst: Fix SST write failure Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 138/154] mtd: rawnand: cadence: fix error code in cadence_nand_init() Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 139/154] mtd: rawnand: cadence: use dma_map_resource for sdma address Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 140/154] mtd: rawnand: cadence: fix incorrect device in dma_unmap_single Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 141/154] perf/x86/intel: Fix event constraints for LNC Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 142/154] irqchip/gic-v3: Fix rk3399 workaround when secure interrupts are enabled Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 143/154] smb: client: Add check for next_buffer in receive_encrypted_standard() Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 144/154] EDAC/qcom: Correct interrupt enable register configuration Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 145/154] ftrace: Correct preemption accounting for function tracing Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 146/154] ftrace: Fix accounting of adding subops to a manager ops Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 147/154] ftrace: Do not add duplicate entries in subops " Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 148/154] tracing: Fix using ret variable in tracing_set_tracer() Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 149/154] net: pse-pd: Fix deadlock in current limit functions Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 150/154] sched_ext: Fix incorrect assumption about migration disabled tasks in task_can_run_on_remote_rq() Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 151/154] selftests/mm: build with -O2 Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 152/154] arm64: dts: rockchip: change eth phy mode to rgmii-id for orangepi r1 plus lts Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 153/154] drm/amdgpu/gfx9: manually control gfxoff for CS on RV Greg Kroah-Hartman
2025-02-24 14:35 ` [PATCH 6.12 154/154] drm/amdgpu: bump version for RV/PCO compute fix Greg Kroah-Hartman
2025-02-24 17:52 ` [PATCH 6.12 000/154] 6.12.17-rc1 review Florian Fainelli
2025-02-24 20:11 ` Peter Schneider
2025-02-24 23:31 ` Shuah Khan
2025-02-25  0:03 ` Jon Hunter
2025-02-25  0:06   ` Jon Hunter
2025-02-25  6:46     ` Greg Kroah-Hartman
2025-02-25  6:23 ` Ron Economos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250224142608.622676836@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=mark.rutland@arm.com \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mhiramat@kernel.org \
    --cc=patches@lists.linux.dev \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox