From: Greg Kroah-Hartman Date: Sun, 28 May 2023 16:52:38 +0000 (+0100) Subject: 4.19-stable patches X-Git-Tag: review~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ac4103ef79d456506b514004de944d1c9f4edd6c;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: asoc-intel-skylake-fix-declaration-of-enum-skl_ch_cfg.patch forcedeth-fix-an-error-handling-path-in-nv_probe.patch x86-show_trace_log_lvl-ensure-stack-pointer-is-aligned-again.patch --- diff --git a/queue-4.19/asoc-intel-skylake-fix-declaration-of-enum-skl_ch_cfg.patch b/queue-4.19/asoc-intel-skylake-fix-declaration-of-enum-skl_ch_cfg.patch new file mode 100644 index 00000000000..3185481d45f --- /dev/null +++ b/queue-4.19/asoc-intel-skylake-fix-declaration-of-enum-skl_ch_cfg.patch @@ -0,0 +1,37 @@ +From 95109657471311601b98e71f03d0244f48dc61bb Mon Sep 17 00:00:00 2001 +From: Cezary Rojewski +Date: Fri, 19 May 2023 22:17:07 +0200 +Subject: ASoC: Intel: Skylake: Fix declaration of enum skl_ch_cfg +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Cezary Rojewski + +commit 95109657471311601b98e71f03d0244f48dc61bb upstream. + +Constant 'C4_CHANNEL' does not exist on the firmware side. Value 0xC is +reserved for 'C7_1' instead. + +Fixes: 04afbbbb1cba ("ASoC: Intel: Skylake: Update the topology interface structure") +Signed-off-by: Cezary Rojewski +Signed-off-by: Amadeusz Sławiński +Link: https://lore.kernel.org/r/20230519201711.4073845-4-amadeuszx.slawinski@linux.intel.com +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman +--- + include/uapi/sound/skl-tplg-interface.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/include/uapi/sound/skl-tplg-interface.h ++++ b/include/uapi/sound/skl-tplg-interface.h +@@ -64,7 +64,8 @@ enum skl_ch_cfg { + SKL_CH_CFG_DUAL_MONO = 9, + SKL_CH_CFG_I2S_DUAL_STEREO_0 = 10, + SKL_CH_CFG_I2S_DUAL_STEREO_1 = 11, +- SKL_CH_CFG_4_CHANNEL = 12, ++ SKL_CH_CFG_7_1 = 12, ++ SKL_CH_CFG_4_CHANNEL = SKL_CH_CFG_7_1, + SKL_CH_CFG_INVALID + }; + diff --git a/queue-4.19/forcedeth-fix-an-error-handling-path-in-nv_probe.patch b/queue-4.19/forcedeth-fix-an-error-handling-path-in-nv_probe.patch new file mode 100644 index 00000000000..4560231d029 --- /dev/null +++ b/queue-4.19/forcedeth-fix-an-error-handling-path-in-nv_probe.patch @@ -0,0 +1,35 @@ +From 5b17a4971d3b2a073f4078dd65331efbe35baa2d Mon Sep 17 00:00:00 2001 +From: Christophe JAILLET +Date: Sat, 20 May 2023 10:30:17 +0200 +Subject: forcedeth: Fix an error handling path in nv_probe() + +From: Christophe JAILLET + +commit 5b17a4971d3b2a073f4078dd65331efbe35baa2d upstream. + +If an error occures after calling nv_mgmt_acquire_sema(), it should be +undone with a corresponding nv_mgmt_release_sema() call. + +Add it in the error handling path of the probe as already done in the +remove function. + +Fixes: cac1c52c3621 ("forcedeth: mgmt unit interface") +Signed-off-by: Christophe JAILLET +Acked-by: Zhu Yanjun +Link: https://lore.kernel.org/r/355e9a7d351b32ad897251b6f81b5886fcdc6766.1684571393.git.christophe.jaillet@wanadoo.fr +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/nvidia/forcedeth.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/ethernet/nvidia/forcedeth.c ++++ b/drivers/net/ethernet/nvidia/forcedeth.c +@@ -6061,6 +6061,7 @@ static int nv_probe(struct pci_dev *pci_ + return 0; + + out_error: ++ nv_mgmt_release_sema(dev); + if (phystate_orig) + writel(phystate|NVREG_ADAPTCTL_RUNNING, base + NvRegAdapterControl); + out_freering: diff --git a/queue-4.19/series b/queue-4.19/series index ab31b924e32..4ca82ad7373 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -126,3 +126,6 @@ power-supply-bq27xxx-fix-poll_interval-handling-and-races-on-remove.patch power-supply-sbs-charger-fix-inhibited-bit-for-status-reg.patch coresight-fix-signedness-bug-in-tmc_etr_buf_insert_barrier_packet.patch xen-pvcalls-back-fix-double-frees-with-pvcalls_new_active_socket.patch +x86-show_trace_log_lvl-ensure-stack-pointer-is-aligned-again.patch +asoc-intel-skylake-fix-declaration-of-enum-skl_ch_cfg.patch +forcedeth-fix-an-error-handling-path-in-nv_probe.patch diff --git a/queue-4.19/x86-show_trace_log_lvl-ensure-stack-pointer-is-aligned-again.patch b/queue-4.19/x86-show_trace_log_lvl-ensure-stack-pointer-is-aligned-again.patch new file mode 100644 index 00000000000..76a653452fe --- /dev/null +++ b/queue-4.19/x86-show_trace_log_lvl-ensure-stack-pointer-is-aligned-again.patch @@ -0,0 +1,69 @@ +From 2e4be0d011f21593c6b316806779ba1eba2cd7e0 Mon Sep 17 00:00:00 2001 +From: Vernon Lovejoy +Date: Fri, 12 May 2023 12:42:32 +0200 +Subject: x86/show_trace_log_lvl: Ensure stack pointer is aligned, again + +From: Vernon Lovejoy + +commit 2e4be0d011f21593c6b316806779ba1eba2cd7e0 upstream. + +The commit e335bb51cc15 ("x86/unwind: Ensure stack pointer is aligned") +tried to align the stack pointer in show_trace_log_lvl(), otherwise the +"stack < stack_info.end" check can't guarantee that the last read does +not go past the end of the stack. + +However, we have the same problem with the initial value of the stack +pointer, it can also be unaligned. So without this patch this trivial +kernel module + + #include + + static int init(void) + { + asm volatile("sub $0x4,%rsp"); + dump_stack(); + asm volatile("add $0x4,%rsp"); + + return -EAGAIN; + } + + module_init(init); + MODULE_LICENSE("GPL"); + +crashes the kernel. + +Fixes: e335bb51cc15 ("x86/unwind: Ensure stack pointer is aligned") +Signed-off-by: Vernon Lovejoy +Signed-off-by: Oleg Nesterov +Link: https://lore.kernel.org/r/20230512104232.GA10227@redhat.com +Signed-off-by: Josh Poimboeuf +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/kernel/dumpstack.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +--- a/arch/x86/kernel/dumpstack.c ++++ b/arch/x86/kernel/dumpstack.c +@@ -171,7 +171,6 @@ void show_trace_log_lvl(struct task_stru + printk("%sCall Trace:\n", log_lvl); + + unwind_start(&state, task, regs, stack); +- stack = stack ? : get_stack_pointer(task, regs); + regs = unwind_get_entry_regs(&state, &partial); + + /* +@@ -190,9 +189,13 @@ void show_trace_log_lvl(struct task_stru + * - hardirq stack + * - entry stack + */ +- for ( ; stack; stack = PTR_ALIGN(stack_info.next_sp, sizeof(long))) { ++ for (stack = stack ?: get_stack_pointer(task, regs); ++ stack; ++ stack = stack_info.next_sp) { + const char *stack_name; + ++ stack = PTR_ALIGN(stack, sizeof(long)); ++ + if (get_stack_info(stack, task, &stack_info, &visit_mask)) { + /* + * We weren't on a valid stack. It's possible that