From: Greg Kroah-Hartman Date: Mon, 24 Jan 2022 09:49:01 +0000 (+0100) Subject: 5.15-stable patches X-Git-Tag: v4.4.300~91 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4566a0f673f41a49c40fd5e9bb36095263c8c933;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: ath11k-qmi-avoid-error-messages-when-dma-allocation-fails.patch tracing-osnoise-properly-unhook-events-if-start_per_cpu_kthreads-fails.patch --- diff --git a/queue-5.15/ath11k-qmi-avoid-error-messages-when-dma-allocation-fails.patch b/queue-5.15/ath11k-qmi-avoid-error-messages-when-dma-allocation-fails.patch new file mode 100644 index 00000000000..81faf501c16 --- /dev/null +++ b/queue-5.15/ath11k-qmi-avoid-error-messages-when-dma-allocation-fails.patch @@ -0,0 +1,33 @@ +From b9b5948cdd7bc8d9fa31c78cbbb04382c815587f Mon Sep 17 00:00:00 2001 +From: Aaron Ma +Date: Tue, 28 Sep 2021 12:05:43 +0300 +Subject: ath11k: qmi: avoid error messages when dma allocation fails + +From: Aaron Ma + +commit b9b5948cdd7bc8d9fa31c78cbbb04382c815587f upstream. + +qmi tries to allocate a large contiguous dma memory at first, +on the AMD Ryzen platform it fails, then retries with small slices. +So set flag GFP_NOWARN to avoid flooding dmesg. + +Signed-off-by: Aaron Ma +Signed-off-by: Kalle Valo +Link: https://lore.kernel.org/r/20210823063258.37747-1-aaron.ma@canonical.com +Cc: "Limonciello, Mario" +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/wireless/ath/ath11k/qmi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/wireless/ath/ath11k/qmi.c ++++ b/drivers/net/wireless/ath/ath11k/qmi.c +@@ -1770,7 +1770,7 @@ static int ath11k_qmi_alloc_target_mem_c + chunk->vaddr = dma_alloc_coherent(ab->dev, + chunk->size, + &chunk->paddr, +- GFP_KERNEL); ++ GFP_KERNEL | __GFP_NOWARN); + if (!chunk->vaddr) { + if (ab->qmi.mem_seg_count <= ATH11K_QMI_FW_MEM_REQ_SEGMENT_CNT) { + ath11k_dbg(ab, ATH11K_DBG_QMI, diff --git a/queue-5.15/series b/queue-5.15/series index f05181a2cae..8c406293766 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -723,3 +723,5 @@ ext4-destroy-ext4_fc_dentry_cachep-kmemcache-on-module-removal.patch ext4-fix-null-ptr-deref-in-__ext4_journal_ensure_credits.patch ext4-fix-an-use-after-free-issue-about-data-journal-writeback-mode.patch ext4-don-t-use-the-orphan-list-when-migrating-an-inode.patch +tracing-osnoise-properly-unhook-events-if-start_per_cpu_kthreads-fails.patch +ath11k-qmi-avoid-error-messages-when-dma-allocation-fails.patch diff --git a/queue-5.15/tracing-osnoise-properly-unhook-events-if-start_per_cpu_kthreads-fails.patch b/queue-5.15/tracing-osnoise-properly-unhook-events-if-start_per_cpu_kthreads-fails.patch new file mode 100644 index 00000000000..53e9e4ec62e --- /dev/null +++ b/queue-5.15/tracing-osnoise-properly-unhook-events-if-start_per_cpu_kthreads-fails.patch @@ -0,0 +1,79 @@ +From 0878355b51f5f26632e652c848a8e174bb02d22d Mon Sep 17 00:00:00 2001 +From: Nikita Yushchenko +Date: Sun, 9 Jan 2022 18:34:59 +0300 +Subject: tracing/osnoise: Properly unhook events if start_per_cpu_kthreads() fails + +From: Nikita Yushchenko + +commit 0878355b51f5f26632e652c848a8e174bb02d22d upstream. + +If start_per_cpu_kthreads() called from osnoise_workload_start() returns +error, event hooks are left in broken state: unhook_irq_events() called +but unhook_thread_events() and unhook_softirq_events() not called, and +trace_osnoise_callback_enabled flag not cleared. + +On the next tracer enable, hooks get not installed due to +trace_osnoise_callback_enabled flag. + +And on the further tracer disable an attempt to remove non-installed +hooks happened, hitting a WARN_ON_ONCE() in tracepoint_remove_func(). + +Fix the error path by adding the missing part of cleanup. +While at this, introduce osnoise_unhook_events() to avoid code +duplication between this error path and normal tracer disable. + +Link: https://lkml.kernel.org/r/20220109153459.3701773-1-nikita.yushchenko@virtuozzo.com + +Cc: stable@vger.kernel.org +Fixes: bce29ac9ce0b ("trace: Add osnoise tracer") +Acked-by: Daniel Bristot de Oliveira +Signed-off-by: Nikita Yushchenko +Signed-off-by: Steven Rostedt +Signed-off-by: Greg Kroah-Hartman +--- + kernel/trace/trace_osnoise.c | 20 ++++++++++++++++---- + 1 file changed, 16 insertions(+), 4 deletions(-) + +--- a/kernel/trace/trace_osnoise.c ++++ b/kernel/trace/trace_osnoise.c +@@ -1932,6 +1932,13 @@ out_unhook_irq: + return -EINVAL; + } + ++static void osnoise_unhook_events(void) ++{ ++ unhook_thread_events(); ++ unhook_softirq_events(); ++ unhook_irq_events(); ++} ++ + static int __osnoise_tracer_start(struct trace_array *tr) + { + int retval; +@@ -1949,7 +1956,14 @@ static int __osnoise_tracer_start(struct + + retval = start_per_cpu_kthreads(tr); + if (retval) { +- unhook_irq_events(); ++ trace_osnoise_callback_enabled = false; ++ /* ++ * Make sure that ftrace_nmi_enter/exit() see ++ * trace_osnoise_callback_enabled as false before continuing. ++ */ ++ barrier(); ++ ++ osnoise_unhook_events(); + return retval; + } + +@@ -1981,9 +1995,7 @@ static void osnoise_tracer_stop(struct t + + stop_per_cpu_kthreads(); + +- unhook_irq_events(); +- unhook_softirq_events(); +- unhook_thread_events(); ++ osnoise_unhook_events(); + + osnoise_busy = false; + }