]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 Mar 2023 09:26:47 +0000 (10:26 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 Mar 2023 09:26:47 +0000 (10:26 +0100)
added patches:
firmware-xilinx-don-t-make-a-sleepable-memory-allocation-from-an-atomic-context.patch
interconnect-fix-mem-leak-when-freeing-nodes.patch
serial-qcom-geni-fix-console-shutdown-hang.patch

queue-5.10/firmware-xilinx-don-t-make-a-sleepable-memory-allocation-from-an-atomic-context.patch [new file with mode: 0644]
queue-5.10/interconnect-fix-mem-leak-when-freeing-nodes.patch [new file with mode: 0644]
queue-5.10/serial-qcom-geni-fix-console-shutdown-hang.patch [new file with mode: 0644]
queue-5.10/series

diff --git a/queue-5.10/firmware-xilinx-don-t-make-a-sleepable-memory-allocation-from-an-atomic-context.patch b/queue-5.10/firmware-xilinx-don-t-make-a-sleepable-memory-allocation-from-an-atomic-context.patch
new file mode 100644 (file)
index 0000000..3c67c1c
--- /dev/null
@@ -0,0 +1,89 @@
+From 38ed310c22e7a0fc978b1f8292136a4a4a8b3051 Mon Sep 17 00:00:00 2001
+From: Roman Gushchin <roman.gushchin@linux.dev>
+Date: Wed, 8 Mar 2023 14:26:02 -0800
+Subject: firmware: xilinx: don't make a sleepable memory allocation from an atomic context
+
+From: Roman Gushchin <roman.gushchin@linux.dev>
+
+commit 38ed310c22e7a0fc978b1f8292136a4a4a8b3051 upstream.
+
+The following issue was discovered using lockdep:
+[    6.691371] BUG: sleeping function called from invalid context at include/linux/sched/mm.h:209
+[    6.694602] in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 1, name: swapper/0
+[    6.702431] 2 locks held by swapper/0/1:
+[    6.706300]  #0: ffffff8800f6f188 (&dev->mutex){....}-{3:3}, at: __device_driver_lock+0x4c/0x90
+[    6.714900]  #1: ffffffc009a2abb8 (enable_lock){....}-{2:2}, at: clk_enable_lock+0x4c/0x140
+[    6.723156] irq event stamp: 304030
+[    6.726596] hardirqs last  enabled at (304029): [<ffffffc008d17ee0>] _raw_spin_unlock_irqrestore+0xc0/0xd0
+[    6.736142] hardirqs last disabled at (304030): [<ffffffc00876bc5c>] clk_enable_lock+0xfc/0x140
+[    6.744742] softirqs last  enabled at (303958): [<ffffffc0080904f0>] _stext+0x4f0/0x894
+[    6.752655] softirqs last disabled at (303951): [<ffffffc0080e53b8>] irq_exit+0x238/0x280
+[    6.760744] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G     U            5.15.36 #2
+[    6.768048] Hardware name: xlnx,zynqmp (DT)
+[    6.772179] Call trace:
+[    6.774584]  dump_backtrace+0x0/0x300
+[    6.778197]  show_stack+0x18/0x30
+[    6.781465]  dump_stack_lvl+0xb8/0xec
+[    6.785077]  dump_stack+0x1c/0x38
+[    6.788345]  ___might_sleep+0x1a8/0x2a0
+[    6.792129]  __might_sleep+0x6c/0xd0
+[    6.795655]  kmem_cache_alloc_trace+0x270/0x3d0
+[    6.800127]  do_feature_check_call+0x100/0x220
+[    6.804513]  zynqmp_pm_invoke_fn+0x8c/0xb0
+[    6.808555]  zynqmp_pm_clock_getstate+0x90/0xe0
+[    6.813027]  zynqmp_pll_is_enabled+0x8c/0x120
+[    6.817327]  zynqmp_pll_enable+0x38/0xc0
+[    6.821197]  clk_core_enable+0x144/0x400
+[    6.825067]  clk_core_enable+0xd4/0x400
+[    6.828851]  clk_core_enable+0xd4/0x400
+[    6.832635]  clk_core_enable+0xd4/0x400
+[    6.836419]  clk_core_enable+0xd4/0x400
+[    6.840203]  clk_core_enable+0xd4/0x400
+[    6.843987]  clk_core_enable+0xd4/0x400
+[    6.847771]  clk_core_enable+0xd4/0x400
+[    6.851555]  clk_core_enable_lock+0x24/0x50
+[    6.855683]  clk_enable+0x24/0x40
+[    6.858952]  fclk_probe+0x84/0xf0
+[    6.862220]  platform_probe+0x8c/0x110
+[    6.865918]  really_probe+0x110/0x5f0
+[    6.869530]  __driver_probe_device+0xcc/0x210
+[    6.873830]  driver_probe_device+0x64/0x140
+[    6.877958]  __driver_attach+0x114/0x1f0
+[    6.881828]  bus_for_each_dev+0xe8/0x160
+[    6.885698]  driver_attach+0x34/0x50
+[    6.889224]  bus_add_driver+0x228/0x300
+[    6.893008]  driver_register+0xc0/0x1e0
+[    6.896792]  __platform_driver_register+0x44/0x60
+[    6.901436]  fclk_driver_init+0x1c/0x28
+[    6.905220]  do_one_initcall+0x104/0x590
+[    6.909091]  kernel_init_freeable+0x254/0x2bc
+[    6.913390]  kernel_init+0x24/0x130
+[    6.916831]  ret_from_fork+0x10/0x20
+
+Fix it by passing the GFP_ATOMIC gfp flag for the corresponding
+memory allocation.
+
+Fixes: acfdd18591ea ("firmware: xilinx: Use hash-table for api feature check")
+Cc: stable <stable@kernel.org>
+Signed-off-by: Roman Gushchin <roman.gushchin@linux.dev>
+Cc: Amit Sunil Dhamne <amit.sunil.dhamne@xilinx.com>
+Cc: Michal Simek <michal.simek@xilinx.com>
+Cc: linux-arm-kernel@lists.infradead.org
+Cc: linux-kernel@vger.kernel.org
+Link: https://lore.kernel.org/r/20230308222602.123866-1-roman.gushchin@linux.dev
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/firmware/xilinx/zynqmp.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/firmware/xilinx/zynqmp.c
++++ b/drivers/firmware/xilinx/zynqmp.c
+@@ -171,7 +171,7 @@ static int zynqmp_pm_feature(u32 api_id)
+       }
+       /* Add new entry if not present */
+-      feature_data = kmalloc(sizeof(*feature_data), GFP_KERNEL);
++      feature_data = kmalloc(sizeof(*feature_data), GFP_ATOMIC);
+       if (!feature_data)
+               return -ENOMEM;
diff --git a/queue-5.10/interconnect-fix-mem-leak-when-freeing-nodes.patch b/queue-5.10/interconnect-fix-mem-leak-when-freeing-nodes.patch
new file mode 100644 (file)
index 0000000..82ae96f
--- /dev/null
@@ -0,0 +1,37 @@
+From a5904f415e1af72fa8fe6665aa4f554dc2099a95 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan+linaro@kernel.org>
+Date: Mon, 6 Mar 2023 08:56:29 +0100
+Subject: interconnect: fix mem leak when freeing nodes
+
+From: Johan Hovold <johan+linaro@kernel.org>
+
+commit a5904f415e1af72fa8fe6665aa4f554dc2099a95 upstream.
+
+The node link array is allocated when adding links to a node but is not
+deallocated when nodes are destroyed.
+
+Fixes: 11f1ceca7031 ("interconnect: Add generic on-chip interconnect API")
+Cc: stable@vger.kernel.org      # 5.1
+Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
+Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
+Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> # i.MX8MP MSC SM2-MB-EP1 Board
+Link: https://lore.kernel.org/r/20230306075651.2449-2-johan+linaro@kernel.org
+Signed-off-by: Georgi Djakov <djakov@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/interconnect/core.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/interconnect/core.c
++++ b/drivers/interconnect/core.c
+@@ -850,6 +850,10 @@ void icc_node_destroy(int id)
+       mutex_unlock(&icc_lock);
++      if (!node)
++              return;
++
++      kfree(node->links);
+       kfree(node);
+ }
+ EXPORT_SYMBOL_GPL(icc_node_destroy);
diff --git a/queue-5.10/serial-qcom-geni-fix-console-shutdown-hang.patch b/queue-5.10/serial-qcom-geni-fix-console-shutdown-hang.patch
new file mode 100644 (file)
index 0000000..3f6f9b2
--- /dev/null
@@ -0,0 +1,49 @@
+From 9aff74cc4e9eb841dde5fd009ed7ddca5db40e68 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan+linaro@kernel.org>
+Date: Tue, 7 Mar 2023 17:44:02 +0100
+Subject: serial: qcom-geni: fix console shutdown hang
+
+From: Johan Hovold <johan+linaro@kernel.org>
+
+commit 9aff74cc4e9eb841dde5fd009ed7ddca5db40e68 upstream.
+
+A recent commit added back the calls top stop tx and rx to shutdown()
+which had previously been removed by commit e83766334f96 ("tty: serial:
+qcom_geni_serial: No need to stop tx/rx on UART shutdown") in order to
+be able to use kgdb after stopping the getty.
+
+Not only did this again break kgdb, but it also broke serial consoles
+more generally by hanging TX when stopping the getty during reboot.
+
+The underlying problem has been there since the driver was first merged
+and fixing it is going to be a bit involved so simply stop calling the
+broken stop functions during shutdown for consoles for now.
+
+Fixes: d8aca2f96813 ("tty: serial: qcom-geni-serial: stop operations in progress at shutdown")
+Cc: stable <stable@kernel.org>
+Cc: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
+Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
+Reviewed-by: Douglas Anderson <dianders@chromium.org>
+Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
+Tested-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
+Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
+Tested-by: Andrew Halaney <ahalaney@redhat.com> # sa8540p-ride
+Link: https://lore.kernel.org/r/20230307164405.14218-2-johan+linaro@kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/tty/serial/qcom_geni_serial.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/tty/serial/qcom_geni_serial.c
++++ b/drivers/tty/serial/qcom_geni_serial.c
+@@ -893,6 +893,10 @@ static int setup_fifos(struct qcom_geni_
+ static void qcom_geni_serial_shutdown(struct uart_port *uport)
+ {
+       disable_irq(uport->irq);
++
++      if (uart_console(uport))
++              return;
++
+       qcom_geni_serial_stop_tx(uport);
+       qcom_geni_serial_stop_rx(uport);
+ }
index 7b424e4da200f472be4e9fdfb6b16e4a7d874fdb..3a7e07dfd3ac2bd50ed655c7b90d64179068808e 100644 (file)
@@ -57,3 +57,6 @@ ext4-fix-possible-double-unlock-when-moving-a-directory.patch
 tty-serial-fsl_lpuart-skip-waiting-for-transmission-complete-when-uartctrl_sbk-is-asserted.patch
 serial-8250_em-fix-uart-port-type.patch
 tty-serial-qcom-geni-serial-stop-operations-in-progress-at-shutdown.patch
+serial-qcom-geni-fix-console-shutdown-hang.patch
+firmware-xilinx-don-t-make-a-sleepable-memory-allocation-from-an-atomic-context.patch
+interconnect-fix-mem-leak-when-freeing-nodes.patch