mptcp: fix possible integer overflow in mptcp_reset_tout_timer
Subsystems (2)
Matthieu Baerts (NGI0)
maintainerPATCH 1/1 mptcp: fix possible integer overflow in mptcp_reset_tout_timer
From: Dmitry Kandybka <[email protected]>
commit b169e76ebad22cbd055101ee5aa1a7bed0e66606 upstream.
In 'mptcp_reset_tout_timer', promote 'probe_timestamp' to unsigned long to avoid possible integer overflow. Compile tested only.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
[ Conflict in this version because commit d866ae9aaa43 ("mptcp: add a
new sysctl for make after break timeout") is not in this version, and replaced TCP_TIMEWAIT_LEN in the expression. The fix can still be applied the same way: by forcing a cast to unsigned long for the first item. ]
--- net/mptcp/protocol.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
net/mptcp/protocol.c +2 -2
@@ -2691,8 +2691,8 @@ void mptcp_reset_tout_timer(struct mptcp_sock *msk, unsigned long fail_tout)if (!fail_tout && !inet_csk (sk)->icsk_mtup.probe_timestamp)return ; - close_timeout =inet_csk (sk)->icsk_mtup.probe_timestamp - tcp_jiffies32 + jiffies + -TCP_TIMEWAIT_LEN ; + close_timeout = (unsigned long )inet_csk (sk)->icsk_mtup.probe_timestamp - + tcp_jiffies32 + jiffies +TCP_TIMEWAIT_LEN ;/* the close timeout takes precedence on the fail one, and here at least one of * them is active
Signature · 1 line
2.45.2
Sasha Levin
maintainer[ Sasha's backport helper bot ]
Hi,
The upstream commit SHA1 provided is correct: b169e76ebad22cbd055101ee5aa1a7bed0e66606
WARNING: Author mismatch between patch and upstream commit:
Backport author: "Matthieu Baerts (NGI0)" <[email protected]> Commit author: Dmitry Kandybka <[email protected]>
Status in newer kernel trees:
6.12.y | Not found
6.11.y | Not found
6.6.y | Not found
Note: The patch differs from the upstream commit:
---
tmp/tmp.e3CQHyz4BZ renamed from - +15 -4
@@ -1,3 +1,5 @@ +commit b169e76ebad22cbd055101ee5aa1a7bed0e66606 upstream. + In 'mptcp_reset_tout_timer', promote 'probe_timestamp' to unsigned long to avoid possible integer overflow. Compile tested only.
@@ -6,22 +8,31 @@ Signed-off-by: Dmitry Kandybka <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]> +[ Conflict in this version because commit d866ae9aaa43 ("mptcp: add a + new sysctl for make after break timeout") is not in this version, and + replaced TCP_TIMEWAIT_LEN in the expression. The fix can still be + applied the same way: by forcing a cast to unsigned long for the first + item. ] +Signed-off-by: Matthieu Baerts (NGI0) <[email protected]> --- net/mptcp/protocol.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c -index b0e9a745ea621..a6f2a25edb119 100644 +index b8357d7c6b3a..01f6ce970918 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c -@@ -2722,8 +2722,8 @@ void mptcp_reset_tout_timer(struct mptcp_sock *msk, unsigned long fail_tout) +@@ -2691,8 +2691,8 @@ void mptcp_reset_tout_timer(struct mptcp_sock *msk, unsigned long fail_tout) if (!fail_tout && !inet_csk(sk)->icsk_mtup.probe_timestamp) return; - close_timeout = inet_csk(sk)->icsk_mtup.probe_timestamp - tcp_jiffies32 + jiffies + -- mptcp_close_timeout(sk); +- TCP_TIMEWAIT_LEN; + close_timeout = (unsigned long)inet_csk(sk)->icsk_mtup.probe_timestamp - -+ tcp_jiffies32 + jiffies + mptcp_close_timeout(sk); ++ tcp_jiffies32 + jiffies + TCP_TIMEWAIT_LEN; /* the close timeout takes precedence on the fail one, and here at least one of * them is active +-- +2.45.2 +
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-6.6.y | Success | Success |