From: Greg Kroah-Hartman Date: Mon, 26 Aug 2024 12:10:16 +0000 (+0200) Subject: 5.15-stable patches X-Git-Tag: v6.1.107~41 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5e59a50e2e02f88c913860361ed0dbf95517cf54;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: cxgb4-add-forgotten-u64-ivlan-cast-before-shift.patch kvm-arm64-make-icc_-sgi-_el1-undef-in-the-absence-of-a-vgicv3.patch mmc-dw_mmc-allow-biu-and-ciu-clocks-to-defer.patch mptcp-pm-re-using-id-of-unused-flushed-subflows.patch mptcp-pm-re-using-id-of-unused-removed-add_addr.patch --- diff --git a/queue-5.15/cxgb4-add-forgotten-u64-ivlan-cast-before-shift.patch b/queue-5.15/cxgb4-add-forgotten-u64-ivlan-cast-before-shift.patch new file mode 100644 index 00000000000..7bed87b8cc1 --- /dev/null +++ b/queue-5.15/cxgb4-add-forgotten-u64-ivlan-cast-before-shift.patch @@ -0,0 +1,38 @@ +From 80a1e7b83bb1834b5568a3872e64c05795d88f31 Mon Sep 17 00:00:00 2001 +From: Nikolay Kuratov +Date: Mon, 19 Aug 2024 10:54:08 +0300 +Subject: cxgb4: add forgotten u64 ivlan cast before shift + +From: Nikolay Kuratov + +commit 80a1e7b83bb1834b5568a3872e64c05795d88f31 upstream. + +It is done everywhere in cxgb4 code, e.g. in is_filter_exact_match() +There is no reason it should not be done here + +Found by Linux Verification Center (linuxtesting.org) with SVACE + +Signed-off-by: Nikolay Kuratov +Cc: stable@vger.kernel.org +Fixes: 12b276fbf6e0 ("cxgb4: add support to create hash filters") +Reviewed-by: Simon Horman +Reviewed-by: Jacob Keller +Link: https://patch.msgid.link/20240819075408.92378-1-kniv@yandex-team.ru +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c ++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c +@@ -1244,7 +1244,8 @@ static u64 hash_filter_ntuple(struct ch_ + * in the Compressed Filter Tuple. + */ + if (tp->vlan_shift >= 0 && fs->mask.ivlan) +- ntuple |= (FT_VLAN_VLD_F | fs->val.ivlan) << tp->vlan_shift; ++ ntuple |= (u64)(FT_VLAN_VLD_F | ++ fs->val.ivlan) << tp->vlan_shift; + + if (tp->port_shift >= 0 && fs->mask.iport) + ntuple |= (u64)fs->val.iport << tp->port_shift; diff --git a/queue-5.15/kvm-arm64-make-icc_-sgi-_el1-undef-in-the-absence-of-a-vgicv3.patch b/queue-5.15/kvm-arm64-make-icc_-sgi-_el1-undef-in-the-absence-of-a-vgicv3.patch new file mode 100644 index 00000000000..618b2b3e511 --- /dev/null +++ b/queue-5.15/kvm-arm64-make-icc_-sgi-_el1-undef-in-the-absence-of-a-vgicv3.patch @@ -0,0 +1,66 @@ +From 3e6245ebe7ef341639e9a7e402b3ade8ad45a19f Mon Sep 17 00:00:00 2001 +From: Marc Zyngier +Date: Tue, 20 Aug 2024 11:03:38 +0100 +Subject: KVM: arm64: Make ICC_*SGI*_EL1 undef in the absence of a vGICv3 + +From: Marc Zyngier + +commit 3e6245ebe7ef341639e9a7e402b3ade8ad45a19f upstream. + +On a system with a GICv3, if a guest hasn't been configured with +GICv3 and that the host is not capable of GICv2 emulation, +a write to any of the ICC_*SGI*_EL1 registers is trapped to EL2. + +We therefore try to emulate the SGI access, only to hit a NULL +pointer as no private interrupt is allocated (no GIC, remember?). + +The obvious fix is to give the guest what it deserves, in the +shape of a UNDEF exception. + +Reported-by: Alexander Potapenko +Signed-off-by: Marc Zyngier +Cc: stable@vger.kernel.org +Link: https://lore.kernel.org/r/20240820100349.3544850-2-maz@kernel.org +Signed-off-by: Oliver Upton +Signed-off-by: Greg Kroah-Hartman +--- + arch/arm64/kvm/sys_regs.c | 6 ++++++ + arch/arm64/kvm/vgic/vgic.h | 7 +++++++ + 2 files changed, 13 insertions(+) + +--- a/arch/arm64/kvm/sys_regs.c ++++ b/arch/arm64/kvm/sys_regs.c +@@ -30,6 +30,7 @@ + #include + + #include "sys_regs.h" ++#include "vgic/vgic.h" + + #include "trace.h" + +@@ -203,6 +204,11 @@ static bool access_gic_sgi(struct kvm_vc + { + bool g1; + ++ if (!kvm_has_gicv3(vcpu->kvm)) { ++ kvm_inject_undefined(vcpu); ++ return false; ++ } ++ + if (!p->is_write) + return read_from_write_only(vcpu, p, r); + +--- a/arch/arm64/kvm/vgic/vgic.h ++++ b/arch/arm64/kvm/vgic/vgic.h +@@ -324,4 +324,11 @@ void vgic_v4_configure_vsgis(struct kvm + void vgic_v4_get_vlpi_state(struct vgic_irq *irq, bool *val); + int vgic_v4_request_vpe_irq(struct kvm_vcpu *vcpu, int irq); + ++static inline bool kvm_has_gicv3(struct kvm *kvm) ++{ ++ return (static_branch_unlikely(&kvm_vgic_global_state.gicv3_cpuif) && ++ irqchip_in_kernel(kvm) && ++ kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3); ++} ++ + #endif diff --git a/queue-5.15/mmc-dw_mmc-allow-biu-and-ciu-clocks-to-defer.patch b/queue-5.15/mmc-dw_mmc-allow-biu-and-ciu-clocks-to-defer.patch new file mode 100644 index 00000000000..5c01246b1a4 --- /dev/null +++ b/queue-5.15/mmc-dw_mmc-allow-biu-and-ciu-clocks-to-defer.patch @@ -0,0 +1,47 @@ +From 6275c7bc8dd07644ea8142a1773d826800f0f3f7 Mon Sep 17 00:00:00 2001 +From: Ben Whitten +Date: Sun, 11 Aug 2024 22:22:11 +0100 +Subject: mmc: dw_mmc: allow biu and ciu clocks to defer + +From: Ben Whitten + +commit 6275c7bc8dd07644ea8142a1773d826800f0f3f7 upstream. + +Fix a race condition if the clock provider comes up after mmc is probed, +this causes mmc to fail without retrying. +When given the DEFER error from the clk source, pass it on up the chain. + +Fixes: f90a0612f0e1 ("mmc: dw_mmc: lookup for optional biu and ciu clocks") +Signed-off-by: Ben Whitten +Cc: stable@vger.kernel.org +Link: https://lore.kernel.org/r/20240811212212.123255-1-ben.whitten@gmail.com +Signed-off-by: Ulf Hansson +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mmc/host/dw_mmc.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/drivers/mmc/host/dw_mmc.c ++++ b/drivers/mmc/host/dw_mmc.c +@@ -3246,6 +3246,10 @@ int dw_mci_probe(struct dw_mci *host) + host->biu_clk = devm_clk_get(host->dev, "biu"); + if (IS_ERR(host->biu_clk)) { + dev_dbg(host->dev, "biu clock not available\n"); ++ ret = PTR_ERR(host->biu_clk); ++ if (ret == -EPROBE_DEFER) ++ return ret; ++ + } else { + ret = clk_prepare_enable(host->biu_clk); + if (ret) { +@@ -3257,6 +3261,10 @@ int dw_mci_probe(struct dw_mci *host) + host->ciu_clk = devm_clk_get(host->dev, "ciu"); + if (IS_ERR(host->ciu_clk)) { + dev_dbg(host->dev, "ciu clock not available\n"); ++ ret = PTR_ERR(host->ciu_clk); ++ if (ret == -EPROBE_DEFER) ++ goto err_clk_biu; ++ + host->bus_hz = host->pdata->bus_hz; + } else { + ret = clk_prepare_enable(host->ciu_clk); diff --git a/queue-5.15/mptcp-pm-re-using-id-of-unused-flushed-subflows.patch b/queue-5.15/mptcp-pm-re-using-id-of-unused-flushed-subflows.patch new file mode 100644 index 00000000000..91c1cd06bb1 --- /dev/null +++ b/queue-5.15/mptcp-pm-re-using-id-of-unused-flushed-subflows.patch @@ -0,0 +1,49 @@ +From ef34a6ea0cab1800f4b3c9c3c2cefd5091e03379 Mon Sep 17 00:00:00 2001 +From: "Matthieu Baerts (NGI0)" +Date: Mon, 19 Aug 2024 21:45:23 +0200 +Subject: mptcp: pm: re-using ID of unused flushed subflows + +From: Matthieu Baerts (NGI0) + +commit ef34a6ea0cab1800f4b3c9c3c2cefd5091e03379 upstream. + +If no subflows are attached to the 'subflow' endpoints that are being +flushed, the corresponding addr IDs will not be marked as available +again. + +Mark all ID as being available when flushing all the 'subflow' +endpoints, and reset local_addr_used counter to cover these cases. + +Note that mptcp_pm_remove_addrs_and_subflows() helper is only called for +flushing operations, not to remove a specific set of addresses and +subflows. + +Fixes: 06faa2271034 ("mptcp: remove multi addresses and subflows in PM") +Cc: stable@vger.kernel.org +Reviewed-by: Mat Martineau +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-5-38035d40de5b@kernel.org +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/pm_netlink.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/net/mptcp/pm_netlink.c ++++ b/net/mptcp/pm_netlink.c +@@ -1501,8 +1501,15 @@ static void mptcp_pm_remove_addrs_and_su + mptcp_pm_remove_addr(msk, &alist); + spin_unlock_bh(&msk->pm.lock); + } ++ + if (slist.nr) + mptcp_pm_remove_subflow(msk, &slist); ++ ++ /* Reset counters: maybe some subflows have been removed before */ ++ spin_lock_bh(&msk->pm.lock); ++ bitmap_fill(msk->pm.id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); ++ msk->pm.local_addr_used = 0; ++ spin_unlock_bh(&msk->pm.lock); + } + + static void mptcp_nl_remove_addrs_list(struct net *net, diff --git a/queue-5.15/mptcp-pm-re-using-id-of-unused-removed-add_addr.patch b/queue-5.15/mptcp-pm-re-using-id-of-unused-removed-add_addr.patch new file mode 100644 index 00000000000..201688690ea --- /dev/null +++ b/queue-5.15/mptcp-pm-re-using-id-of-unused-removed-add_addr.patch @@ -0,0 +1,40 @@ +From e255683c06df572ead96db5efb5d21be30c0efaa Mon Sep 17 00:00:00 2001 +From: "Matthieu Baerts (NGI0)" +Date: Mon, 19 Aug 2024 21:45:19 +0200 +Subject: mptcp: pm: re-using ID of unused removed ADD_ADDR + +From: Matthieu Baerts (NGI0) + +commit e255683c06df572ead96db5efb5d21be30c0efaa upstream. + +If no subflow is attached to the 'signal' endpoint that is being +removed, the addr ID will not be marked as available again. + +Mark the linked ID as available when removing the address entry from the +list to cover this case. + +Fixes: b6c08380860b ("mptcp: remove addr and subflow in PM netlink") +Cc: stable@vger.kernel.org +Reviewed-by: Mat Martineau +Signed-off-by: Matthieu Baerts (NGI0) +Link: https://patch.msgid.link/20240819-net-mptcp-pm-reusing-id-v1-1-38035d40de5b@kernel.org +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + net/mptcp/pm_netlink.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/net/mptcp/pm_netlink.c ++++ b/net/mptcp/pm_netlink.c +@@ -1341,7 +1341,10 @@ static bool mptcp_pm_remove_anno_addr(st + ret = remove_anno_list_by_saddr(msk, addr); + if (ret || force) { + spin_lock_bh(&msk->pm.lock); +- msk->pm.add_addr_signaled -= ret; ++ if (ret) { ++ __set_bit(addr->id, msk->pm.id_avail_bitmap); ++ msk->pm.add_addr_signaled--; ++ } + mptcp_pm_remove_addr(msk, &list); + spin_unlock_bh(&msk->pm.lock); + } diff --git a/queue-5.15/series b/queue-5.15/series index 9111c5d504e..973ed881d5c 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -162,3 +162,8 @@ drm-amdgpu-sdma5.2-limit-wptr-workaround-to-sdma-5.2.1.patch mips-loongson64-set-timer-mode-in-cpu-probe.patch hid-wacom-defer-calculation-of-resolution-until-resolution_code-is-known.patch hid-microsoft-add-rumble-support-to-latest-xbox-controllers.patch +cxgb4-add-forgotten-u64-ivlan-cast-before-shift.patch +kvm-arm64-make-icc_-sgi-_el1-undef-in-the-absence-of-a-vgicv3.patch +mmc-dw_mmc-allow-biu-and-ciu-clocks-to-defer.patch +mptcp-pm-re-using-id-of-unused-removed-add_addr.patch +mptcp-pm-re-using-id-of-unused-flushed-subflows.patch