From: Greg Kroah-Hartman Date: Wed, 22 Nov 2023 20:09:34 +0000 (+0000) Subject: 5.15-stable patches X-Git-Tag: v4.14.331~108 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=79590197c97f0319a568ab3085540efbe0df4def;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: pci-aspm-fix-l1-substate-handling-in-aspm_attr_store_common.patch pci-exynos-don-t-discard-.remove-callback.patch --- diff --git a/queue-5.15/pci-aspm-fix-l1-substate-handling-in-aspm_attr_store_common.patch b/queue-5.15/pci-aspm-fix-l1-substate-handling-in-aspm_attr_store_common.patch new file mode 100644 index 00000000000..e7bf3983e13 --- /dev/null +++ b/queue-5.15/pci-aspm-fix-l1-substate-handling-in-aspm_attr_store_common.patch @@ -0,0 +1,51 @@ +From 8e37372ad0bea4c9b4712d9943f6ae96cff9491f Mon Sep 17 00:00:00 2001 +From: Heiner Kallweit +Date: Wed, 11 Oct 2023 09:46:45 +0200 +Subject: PCI/ASPM: Fix L1 substate handling in aspm_attr_store_common() + +From: Heiner Kallweit + +commit 8e37372ad0bea4c9b4712d9943f6ae96cff9491f upstream. + +aspm_attr_store_common(), which handles sysfs control of ASPM, has the same +problem as fb097dcd5a28 ("PCI/ASPM: Disable only ASPM_STATE_L1 when driver +disables L1"): disabling L1 adds only ASPM_L1 (but not any of the L1.x +substates) to the "aspm_disable" mask. + +Enabling one substate, e.g., L1.1, via sysfs removes ASPM_L1 from the +disable mask. Since disabling L1 via sysfs doesn't add any of the +substates to the disable mask, enabling L1.1 actually enables *all* the +substates. + +In this scenario: + + - Write 0 to "l1_aspm" to disable L1 + - Write 1 to "l1_1_aspm" to enable L1.1 + +the intention is to disable L1 and all L1.x substates, then enable just +L1.1, but in fact, *all* L1.x substates are enabled. + +Fix this by explicitly disabling all the L1.x substates when disabling L1. + +Fixes: 72ea91afbfb0 ("PCI/ASPM: Add sysfs attributes for controlling ASPM link states") +Link: https://lore.kernel.org/r/6ba7dd79-9cfe-4ed0-a002-d99cb842f361@gmail.com +Signed-off-by: Heiner Kallweit +[bhelgaas: commit log] +Signed-off-by: Bjorn Helgaas +Cc: stable@vger.kernel.org +Signed-off-by: Greg Kroah-Hartman +--- + drivers/pci/pcie/aspm.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/pci/pcie/aspm.c ++++ b/drivers/pci/pcie/aspm.c +@@ -1231,6 +1231,8 @@ static ssize_t aspm_attr_store_common(st + link->aspm_disable &= ~ASPM_STATE_L1; + } else { + link->aspm_disable |= state; ++ if (state & ASPM_STATE_L1) ++ link->aspm_disable |= ASPM_STATE_L1SS; + } + + pcie_config_aspm_link(link, policy_to_aspm_state(link)); diff --git a/queue-5.15/pci-exynos-don-t-discard-.remove-callback.patch b/queue-5.15/pci-exynos-don-t-discard-.remove-callback.patch new file mode 100644 index 00000000000..4158693269a --- /dev/null +++ b/queue-5.15/pci-exynos-don-t-discard-.remove-callback.patch @@ -0,0 +1,55 @@ +From 83a939f0fdc208ff3639dd3d42ac9b3c35607fd2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= +Date: Sun, 1 Oct 2023 19:02:51 +0200 +Subject: PCI: exynos: Don't discard .remove() callback +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Uwe Kleine-König + +commit 83a939f0fdc208ff3639dd3d42ac9b3c35607fd2 upstream. + +With CONFIG_PCI_EXYNOS=y and exynos_pcie_remove() marked with __exit, the +function is discarded from the driver. In this case a bound device can +still get unbound, e.g via sysfs. Then no cleanup code is run resulting in +resource leaks or worse. + +The right thing to do is do always have the remove callback available. +This fixes the following warning by modpost: + + WARNING: modpost: drivers/pci/controller/dwc/pci-exynos: section mismatch in reference: exynos_pcie_driver+0x8 (section: .data) -> exynos_pcie_remove (section: .exit.text) + +(with ARCH=x86_64 W=1 allmodconfig). + +Fixes: 340cba6092c2 ("pci: Add PCIe driver for Samsung Exynos") +Link: https://lore.kernel.org/r/20231001170254.2506508-2-u.kleine-koenig@pengutronix.de +Signed-off-by: Uwe Kleine-König +Signed-off-by: Bjorn Helgaas +Reviewed-by: Alim Akhtar +Cc: stable@vger.kernel.org +Signed-off-by: Greg Kroah-Hartman +--- + drivers/pci/controller/dwc/pci-exynos.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/pci/controller/dwc/pci-exynos.c ++++ b/drivers/pci/controller/dwc/pci-exynos.c +@@ -377,7 +377,7 @@ fail_probe: + return ret; + } + +-static int __exit exynos_pcie_remove(struct platform_device *pdev) ++static int exynos_pcie_remove(struct platform_device *pdev) + { + struct exynos_pcie *ep = platform_get_drvdata(pdev); + +@@ -433,7 +433,7 @@ static const struct of_device_id exynos_ + + static struct platform_driver exynos_pcie_driver = { + .probe = exynos_pcie_probe, +- .remove = __exit_p(exynos_pcie_remove), ++ .remove = exynos_pcie_remove, + .driver = { + .name = "exynos-pcie", + .of_match_table = exynos_pcie_of_match, diff --git a/queue-5.15/series b/queue-5.15/series index 54806d9d2c3..6e46217d1b5 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -187,6 +187,8 @@ clk-qcom-ipq8074-drop-the-clk_set_rate_parent-flag-from-pll-clocks.patch clk-qcom-ipq6018-drop-the-clk_set_rate_parent-flag-from-pll-clocks.patch mmc-vub300-fix-an-error-code.patch mmc-sdhci_am654-fix-start-loop-index-for-tap-value-parsing.patch +pci-aspm-fix-l1-substate-handling-in-aspm_attr_store_common.patch +pci-exynos-don-t-discard-.remove-callback.patch wifi-ath11k-fix-temperature-event-locking.patch wifi-ath11k-fix-dfs-radar-event-locking.patch wifi-ath11k-fix-htt-pktlog-locking.patch