]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Oct 2025 08:49:35 +0000 (10:49 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Oct 2025 08:49:35 +0000 (10:49 +0200)
added patches:
acpi-debug-fix-signedness-issues-in-read-write-helpers.patch
acpi-tad-add-missing-sysfs_remove_group-for-acpi_tad_rt.patch
arm64-dts-qcom-msm8916-add-missing-mdss-reset.patch

queue-5.4/acpi-debug-fix-signedness-issues-in-read-write-helpers.patch [new file with mode: 0644]
queue-5.4/acpi-tad-add-missing-sysfs_remove_group-for-acpi_tad_rt.patch [new file with mode: 0644]
queue-5.4/arm64-dts-qcom-msm8916-add-missing-mdss-reset.patch [new file with mode: 0644]
queue-5.4/series

diff --git a/queue-5.4/acpi-debug-fix-signedness-issues-in-read-write-helpers.patch b/queue-5.4/acpi-debug-fix-signedness-issues-in-read-write-helpers.patch
new file mode 100644 (file)
index 0000000..61fe905
--- /dev/null
@@ -0,0 +1,125 @@
+From 496f9372eae14775e0524e83e952814691fe850a Mon Sep 17 00:00:00 2001
+From: Amir Mohammad Jahangirzad <a.jahangirzad@gmail.com>
+Date: Tue, 23 Sep 2025 05:01:13 +0330
+Subject: ACPI: debug: fix signedness issues in read/write helpers
+
+From: Amir Mohammad Jahangirzad <a.jahangirzad@gmail.com>
+
+commit 496f9372eae14775e0524e83e952814691fe850a upstream.
+
+In the ACPI debugger interface, the helper functions for read and write
+operations use "int" as the length parameter data type. When a large
+"size_t count" is passed from the file operations, this cast to "int"
+results in truncation and a negative value due to signed integer
+representation.
+
+Logically, this negative number propagates to the min() calculation,
+where it is selected over the positive buffer space value, leading to
+unexpected behavior. Subsequently, when this negative value is used in
+copy_to_user() or copy_from_user(), it is interpreted as a large positive
+value due to the unsigned nature of the size parameter in these functions,
+causing the copy operations to attempt handling sizes far beyond the
+intended buffer limits.
+
+Address the issue by:
+ - Changing the length parameters in acpi_aml_read_user() and
+   acpi_aml_write_user() from "int" to "size_t", aligning with the
+   expected unsigned size semantics.
+ - Updating return types and local variables in acpi_aml_read() and
+   acpi_aml_write() to "ssize_t" for consistency with kernel file
+   operation conventions.
+ - Using "size_t" for the "n" variable to ensure calculations remain
+   unsigned.
+ - Using min_t() for circ_count_to_end() and circ_space_to_end() to
+   ensure type-safe comparisons and prevent integer overflow.
+
+Signed-off-by: Amir Mohammad Jahangirzad <a.jahangirzad@gmail.com>
+Link: https://patch.msgid.link/20250923013113.20615-1-a.jahangirzad@gmail.com
+[ rjw: Changelog tweaks, local variable definitions ordering adjustments ]
+Fixes: 8cfb0cdf07e2 ("ACPI / debugger: Add IO interface to access debugger functionalities")
+Cc: 4.5+ <stable@vger.kernel.org> # 4.5+
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/acpi/acpi_dbg.c |   26 +++++++++++++-------------
+ 1 file changed, 13 insertions(+), 13 deletions(-)
+
+--- a/drivers/acpi/acpi_dbg.c
++++ b/drivers/acpi/acpi_dbg.c
+@@ -576,11 +576,11 @@ static int acpi_aml_release(struct inode
+       return 0;
+ }
+-static int acpi_aml_read_user(char __user *buf, int len)
++static ssize_t acpi_aml_read_user(char __user *buf, size_t len)
+ {
+-      int ret;
+       struct circ_buf *crc = &acpi_aml_io.out_crc;
+-      int n;
++      ssize_t ret;
++      size_t n;
+       char *p;
+       ret = acpi_aml_lock_read(crc, ACPI_AML_OUT_USER);
+@@ -589,7 +589,7 @@ static int acpi_aml_read_user(char __use
+       /* sync head before removing logs */
+       smp_rmb();
+       p = &crc->buf[crc->tail];
+-      n = min(len, circ_count_to_end(crc));
++      n = min_t(size_t, len, circ_count_to_end(crc));
+       if (copy_to_user(buf, p, n)) {
+               ret = -EFAULT;
+               goto out;
+@@ -606,8 +606,8 @@ out:
+ static ssize_t acpi_aml_read(struct file *file, char __user *buf,
+                            size_t count, loff_t *ppos)
+ {
+-      int ret = 0;
+-      int size = 0;
++      ssize_t ret = 0;
++      ssize_t size = 0;
+       if (!count)
+               return 0;
+@@ -646,11 +646,11 @@ again:
+       return size > 0 ? size : ret;
+ }
+-static int acpi_aml_write_user(const char __user *buf, int len)
++static ssize_t acpi_aml_write_user(const char __user *buf, size_t len)
+ {
+-      int ret;
+       struct circ_buf *crc = &acpi_aml_io.in_crc;
+-      int n;
++      ssize_t ret;
++      size_t n;
+       char *p;
+       ret = acpi_aml_lock_write(crc, ACPI_AML_IN_USER);
+@@ -659,7 +659,7 @@ static int acpi_aml_write_user(const cha
+       /* sync tail before inserting cmds */
+       smp_mb();
+       p = &crc->buf[crc->head];
+-      n = min(len, circ_space_to_end(crc));
++      n = min_t(size_t, len, circ_space_to_end(crc));
+       if (copy_from_user(p, buf, n)) {
+               ret = -EFAULT;
+               goto out;
+@@ -670,14 +670,14 @@ static int acpi_aml_write_user(const cha
+       ret = n;
+ out:
+       acpi_aml_unlock_fifo(ACPI_AML_IN_USER, ret >= 0);
+-      return n;
++      return ret;
+ }
+ static ssize_t acpi_aml_write(struct file *file, const char __user *buf,
+                             size_t count, loff_t *ppos)
+ {
+-      int ret = 0;
+-      int size = 0;
++      ssize_t ret = 0;
++      ssize_t size = 0;
+       if (!count)
+               return 0;
diff --git a/queue-5.4/acpi-tad-add-missing-sysfs_remove_group-for-acpi_tad_rt.patch b/queue-5.4/acpi-tad-add-missing-sysfs_remove_group-for-acpi_tad_rt.patch
new file mode 100644 (file)
index 0000000..6a39376
--- /dev/null
@@ -0,0 +1,49 @@
+From 4aac453deca0d9c61df18d968f8864c3ae7d3d8d Mon Sep 17 00:00:00 2001
+From: Daniel Tang <danielzgtg.opensource@gmail.com>
+Date: Thu, 28 Aug 2025 01:38:14 -0400
+Subject: ACPI: TAD: Add missing sysfs_remove_group() for ACPI_TAD_RT
+
+From: Daniel Tang <danielzgtg.opensource@gmail.com>
+
+commit 4aac453deca0d9c61df18d968f8864c3ae7d3d8d upstream.
+
+Previously, after `rmmod acpi_tad`, `modprobe acpi_tad` would fail
+with this dmesg:
+
+sysfs: cannot create duplicate filename '/devices/platform/ACPI000E:00/time'
+Call Trace:
+ <TASK>
+ dump_stack_lvl+0x6c/0x90
+ dump_stack+0x10/0x20
+ sysfs_warn_dup+0x8b/0xa0
+ sysfs_add_file_mode_ns+0x122/0x130
+ internal_create_group+0x1dd/0x4c0
+ sysfs_create_group+0x13/0x20
+ acpi_tad_probe+0x147/0x1f0 [acpi_tad]
+ platform_probe+0x42/0xb0
+ </TASK>
+acpi-tad ACPI000E:00: probe with driver acpi-tad failed with error -17
+
+Fixes: 3230b2b3c1ab ("ACPI: TAD: Add low-level support for real time capability")
+Signed-off-by: Daniel Tang <danielzgtg.opensource@gmail.com>
+Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
+Link: https://patch.msgid.link/2881298.hMirdbgypa@daniel-desktop3
+Cc: 5.2+ <stable@vger.kernel.org> # 5.2+
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/acpi/acpi_tad.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/acpi/acpi_tad.c
++++ b/drivers/acpi/acpi_tad.c
+@@ -563,6 +563,9 @@ static int acpi_tad_remove(struct platfo
+       pm_runtime_get_sync(dev);
++      if (dd->capabilities & ACPI_TAD_RT)
++              sysfs_remove_group(&dev->kobj, &acpi_tad_time_attr_group);
++
+       if (dd->capabilities & ACPI_TAD_DC_WAKE)
+               sysfs_remove_group(&dev->kobj, &acpi_tad_dc_attr_group);
diff --git a/queue-5.4/arm64-dts-qcom-msm8916-add-missing-mdss-reset.patch b/queue-5.4/arm64-dts-qcom-msm8916-add-missing-mdss-reset.patch
new file mode 100644 (file)
index 0000000..173757d
--- /dev/null
@@ -0,0 +1,54 @@
+From 99b78773c2ae55dcc01025f94eae8ce9700ae985 Mon Sep 17 00:00:00 2001
+From: Stephan Gerhold <stephan.gerhold@linaro.org>
+Date: Mon, 15 Sep 2025 15:28:30 +0200
+Subject: arm64: dts: qcom: msm8916: Add missing MDSS reset
+
+From: Stephan Gerhold <stephan.gerhold@linaro.org>
+
+commit 99b78773c2ae55dcc01025f94eae8ce9700ae985 upstream.
+
+On most MSM8916 devices (aside from the DragonBoard 410c), the bootloader
+already initializes the display to show the boot splash screen. In this
+situation, MDSS is already configured and left running when starting Linux.
+To avoid side effects from the bootloader configuration, the MDSS reset can
+be specified in the device tree to start again with a clean hardware state.
+
+The reset for MDSS is currently missing in msm8916.dtsi, which causes
+errors when the MDSS driver tries to re-initialize the registers:
+
+ dsi_err_worker: status=6
+ dsi_err_worker: status=6
+ dsi_err_worker: status=6
+ ...
+
+It turns out that we have always indirectly worked around this by building
+the MDSS driver as a module. Before v6.17, the power domain was temporarily
+turned off until the module was loaded, long enough to clear the register
+contents. In v6.17, power domains are not turned off during boot until
+sync_state() happens, so this is no longer working. Even before v6.17 this
+resulted in broken behavior, but notably only when the MDSS driver was
+built-in instead of a module.
+
+Cc: stable@vger.kernel.org
+Fixes: 305410ffd1b2 ("arm64: dts: msm8916: Add display support")
+Signed-off-by: Stephan Gerhold <stephan.gerhold@linaro.org>
+Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
+Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
+Link: https://lore.kernel.org/r/20250915-msm8916-resets-v1-1-a5c705df0c45@linaro.org
+Signed-off-by: Bjorn Andersson <andersson@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/arm64/boot/dts/qcom/msm8916.dtsi |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
++++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
+@@ -1599,6 +1599,8 @@
+               hexagon_smp2p_in: slave-kernel {
+                       qcom,entry-name = "slave-kernel";
++                      resets = <&gcc GCC_MDSS_BCR>;
++
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
index 79558d0af548dee350b41599d71dd0e4f211b227..0f139265540af59269d4472790f39e9ab0126612 100644 (file)
@@ -98,3 +98,6 @@ mailbox-zynqmp-ipi-remove-dev.parent-check-in-zynqmp.patch
 crypto-essiv-check-ssize-for-decryption-and-in-place.patch
 tpm-tpm_tis-claim-locality-before-writing-interrupt-.patch
 tpm_tis-fix-incorrect-arguments-in-tpm_tis_probe_irq.patch
+acpi-tad-add-missing-sysfs_remove_group-for-acpi_tad_rt.patch
+acpi-debug-fix-signedness-issues-in-read-write-helpers.patch
+arm64-dts-qcom-msm8916-add-missing-mdss-reset.patch