mirror of
https://github.com/torvalds/linux
synced 2024-07-23 03:29:48 +00:00
mptcp: sockopt: info: stop early if no buffer
Up to recently, it has been recommended to use getsockopt(MPTCP_INFO) to check if a fallback to TCP happened, or if the client requested to use MPTCP. In this case, the userspace app is only interested by the returned value of the getsocktop() call, and can then give 0 for the option length, and NULL for the buffer address. An easy optimisation is then to stop early, and avoid filling a local buffer -- which now requires two different locks -- if it is not needed. Reviewed-by: Mat Martineau <martineau@kernel.org> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Signed-off-by: Mat Martineau <martineau@kernel.org> Link: https://lore.kernel.org/r/20240514011335.176158-4-martineau@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
bd11dc4fb9
commit
ce5f6f71b0
|
@ -999,6 +999,10 @@ static int mptcp_getsockopt_info(struct mptcp_sock *msk, char __user *optval, in
|
|||
if (get_user(len, optlen))
|
||||
return -EFAULT;
|
||||
|
||||
/* When used only to check if a fallback to TCP happened. */
|
||||
if (len == 0)
|
||||
return 0;
|
||||
|
||||
len = min_t(unsigned int, len, sizeof(struct mptcp_info));
|
||||
|
||||
mptcp_diag_fill_info(msk, &m_info);
|
||||
|
|
Loading…
Reference in a new issue