--- /dev/null
+From stable+bounces-180860-greg=kroah.com@vger.kernel.org Mon Sep 22 02:09:55 2025
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 21 Sep 2025 20:09:47 -0400
+Subject: mptcp: propagate shutdown to subflows when possible
+To: stable@vger.kernel.org
+Cc: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>, Mat Martineau <martineau@kernel.org>, Geliang Tang <geliang@kernel.org>, Jakub Kicinski <kuba@kernel.org>, Sasha Levin <sashal@kernel.org>
+Message-ID: <20250922000947.3097293-1-sashal@kernel.org>
+
+From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
+
+[ Upstream commit f755be0b1ff429a2ecf709beeb1bcd7abc111c2b ]
+
+When the MPTCP DATA FIN have been ACKed, there is no more MPTCP related
+metadata to exchange, and all subflows can be safely shutdown.
+
+Before this patch, the subflows were actually terminated at 'close()'
+time. That's certainly fine most of the time, but not when the userspace
+'shutdown()' a connection, without close()ing it. When doing so, the
+subflows were staying in LAST_ACK state on one side -- and consequently
+in FIN_WAIT2 on the other side -- until the 'close()' of the MPTCP
+socket.
+
+Now, when the DATA FIN have been ACKed, all subflows are shutdown. A
+consequence of this is that the TCP 'FIN' flag can be set earlier now,
+but the end result is the same. This affects the packetdrill tests
+looking at the end of the MPTCP connections, but for a good reason.
+
+Note that tcp_shutdown() will check the subflow state, so no need to do
+that again before calling it.
+
+Fixes: 3721b9b64676 ("mptcp: Track received DATA_FIN sequence number and add related helpers")
+Cc: stable@vger.kernel.org
+Fixes: 16a9a9da1723 ("mptcp: Add helper to process acks of DATA_FIN")
+Reviewed-by: Mat Martineau <martineau@kernel.org>
+Reviewed-by: Geliang Tang <geliang@kernel.org>
+Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+Link: https://patch.msgid.link/20250912-net-mptcp-fix-sft-connect-v1-1-d40e77cbbf02@kernel.org
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+[ Adjust context ]
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/mptcp/protocol.c | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+--- a/net/mptcp/protocol.c
++++ b/net/mptcp/protocol.c
+@@ -415,6 +415,20 @@ static void mptcp_close_wake_up(struct s
+ sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN);
+ }
+
++static void mptcp_shutdown_subflows(struct mptcp_sock *msk)
++{
++ struct mptcp_subflow_context *subflow;
++
++ mptcp_for_each_subflow(msk, subflow) {
++ struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
++ bool slow;
++
++ slow = lock_sock_fast(ssk);
++ tcp_shutdown(ssk, SEND_SHUTDOWN);
++ unlock_sock_fast(ssk, slow);
++ }
++}
++
+ static bool mptcp_pending_data_fin_ack(struct sock *sk)
+ {
+ struct mptcp_sock *msk = mptcp_sk(sk);
+@@ -438,6 +452,7 @@ static void mptcp_check_data_fin_ack(str
+ break;
+ case TCP_CLOSING:
+ case TCP_LAST_ACK:
++ mptcp_shutdown_subflows(msk);
+ mptcp_set_state(sk, TCP_CLOSE);
+ break;
+ }
+@@ -605,6 +620,7 @@ static bool mptcp_check_data_fin(struct
+ mptcp_set_state(sk, TCP_CLOSING);
+ break;
+ case TCP_FIN_WAIT2:
++ mptcp_shutdown_subflows(msk);
+ mptcp_set_state(sk, TCP_CLOSE);
+ break;
+ default:
--- /dev/null
+From bruno.thomsen@gmail.com Sun Sep 21 19:35:33 2025
+From: Bruno Thomsen <bruno.thomsen@gmail.com>
+Date: Wed, 20 Aug 2025 21:30:16 +0200
+Subject: rtc: pcf2127: fix SPI command byte for PCF2131 backport
+To: linux-rtc@vger.kernel.org
+Cc: bruno.thomsen@gmail.com, stable@vger.kernel.org, Alexandre Belloni <alexandre.belloni@bootlin.com>, Elena Popa <elena.popa@nxp.com>, Hugo Villeneuve <hvilleneuve@dimonoff.com>
+Message-ID: <20250820193016.7987-1-bruno.thomsen@gmail.com>
+
+From: Bruno Thomsen <bruno.thomsen@gmail.com>
+
+When commit fa78e9b606a472495ef5b6b3d8b45c37f7727f9d upstream was
+backported to LTS branches linux-6.12.y and linux-6.6.y, the SPI regmap
+config fix got applied to the I2C regmap config. Most likely due to a new
+RTC get/set parm feature introduced in 6.14 causing regmap config sections
+in the buttom of the driver to move. LTS branch linux-6.1.y and earlier
+does not have PCF2131 device support.
+
+Issue can be seen in buttom of this diff in stable/linux.git tree:
+git diff master..linux-6.12.y -- drivers/rtc/rtc-pcf2127.c
+
+Fixes: ee61aec8529e ("rtc: pcf2127: fix SPI command byte for PCF2131")
+Fixes: 5cdd1f73401d ("rtc: pcf2127: fix SPI command byte for PCF2131")
+Cc: stable@vger.kernel.org
+Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
+Cc: Elena Popa <elena.popa@nxp.com>
+Cc: Hugo Villeneuve <hvilleneuve@dimonoff.com>
+Signed-off-by: Bruno Thomsen <bruno.thomsen@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/rtc/rtc-pcf2127.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+--- a/drivers/rtc/rtc-pcf2127.c
++++ b/drivers/rtc/rtc-pcf2127.c
+@@ -1383,11 +1383,6 @@ static int pcf2127_i2c_probe(struct i2c_
+ variant = &pcf21xx_cfg[type];
+ }
+
+- if (variant->type == PCF2131) {
+- config.read_flag_mask = 0x0;
+- config.write_flag_mask = 0x0;
+- }
+-
+ config.max_register = variant->max_register,
+
+ regmap = devm_regmap_init(&client->dev, &pcf2127_i2c_regmap,
+@@ -1461,6 +1456,11 @@ static int pcf2127_spi_probe(struct spi_
+ variant = &pcf21xx_cfg[type];
+ }
+
++ if (variant->type == PCF2131) {
++ config.read_flag_mask = 0x0;
++ config.write_flag_mask = 0x0;
++ }
++
+ config.max_register = variant->max_register;
+
+ regmap = devm_regmap_init_spi(spi, &config);