Skip to content

Commit b157dab

Browse files
Dwyane-Yangregkh
authored andcommitted
mptcp: fix scheduling with atomic in timestamp sockopt
commit b5c5290 upstream. Using lock_sock_fast() (atomic context) around sock_set_timestamp() and sock_set_timestamping() is unsafe, as both helpers can sleep. Replace lock_sock_fast() with sleepable lock_sock()/release_sock() to avoid scheduling while atomic panic. Fixes: 9061f24 ("mptcp: sockopt: propagate timestamp request to subflows") Cc: stable@vger.kernel.org Reported-by: Sashiko <sashiko-bot@kernel.org> Closes: https://sashiko.dev/#/patchset/20260420093343.16443-1-gang.yan@linux.dev Signed-off-by: Gang Yan <yangang@kylinos.cn> Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Link: https://patch.msgid.link/20260427-net-mptcp-misc-fixes-7-1-rc2-v1-2-7432b7f279fa@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 1a7a845 commit b157dab

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

net/mptcp/sockopt.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,10 @@ static int mptcp_setsockopt_sol_socket_tstamp(struct mptcp_sock *msk, int optnam
159159
lock_sock(sk);
160160
mptcp_for_each_subflow(msk, subflow) {
161161
struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
162-
bool slow = lock_sock_fast(ssk);
163162

163+
lock_sock(ssk);
164164
sock_set_timestamp(ssk, optname, !!val);
165-
unlock_sock_fast(ssk, slow);
165+
release_sock(ssk);
166166
}
167167

168168
release_sock(sk);
@@ -235,10 +235,10 @@ static int mptcp_setsockopt_sol_socket_timestamping(struct mptcp_sock *msk,
235235

236236
mptcp_for_each_subflow(msk, subflow) {
237237
struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
238-
bool slow = lock_sock_fast(ssk);
239238

239+
lock_sock(ssk);
240240
sock_set_timestamping(ssk, optname, timestamping);
241-
unlock_sock_fast(ssk, slow);
241+
release_sock(ssk);
242242
}
243243

244244
release_sock(sk);

0 commit comments

Comments
 (0)