Thread (18 messages) 18 messages, 5 authors, 2021-08-29

RE: [net-next, v4, 08/11] net: sock: extend SO_TIMESTAMPING for PHC binding

From: "Y.b. Lu" <yangbo.lu@nxp.com>
Date: 2021-06-30 08:30:03
Also in: linux-kselftest, lkml, mptcp

Hi Mat,
-----Original Message-----
From: Mat Martineau <redacted>
Sent: 2021年6月26日 9:00
To: Y.b. Lu <yangbo.lu@nxp.com>
Cc: netdev@vger.kernel.org; linux-kernel@vger.kernel.org;
linux-kselftest@vger.kernel.org; mptcp@lists.linux.dev; Richard Cochran
[off-list ref]; David S . Miller [off-list ref];
Jakub Kicinski [off-list ref]; Matthieu Baerts
[off-list ref]; Shuah Khan [off-list ref]; Michal
Kubecek [off-list ref]; Florian Fainelli [off-list ref];
Andrew Lunn [off-list ref]; Rui Sousa [off-list ref]; Sebastien
Laveze [off-list ref]
Subject: Re: [net-next, v4, 08/11] net: sock: extend SO_TIMESTAMPING for
PHC binding

On Fri, 25 Jun 2021, Yangbo Lu wrote:
[...]
quoted
diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c
index ea38cbcd2ad4..e20aefc20d75 100644
--- a/net/mptcp/sockopt.c
+++ b/net/mptcp/sockopt.c
@@ -207,14 +207,26 @@ static int
mptcp_setsockopt_sol_socket_timestamping(struct mptcp_sock *msk,
quoted
{
	struct mptcp_subflow_context *subflow;
	struct sock *sk = (struct sock *)msk;
+	struct so_timestamping timestamping;
	int val, ret;

-	ret = mptcp_get_int_option(msk, optval, optlen, &val);
-	if (ret)
-		return ret;
+	if (optlen == sizeof(timestamping)) {
+		if (copy_from_sockptr(&timestamping, optval,
+				      sizeof(timestamping)))
+			return -EFAULT;
+	} else if (optlen == sizeof(int)) {
+		if (copy_from_sockptr(val, optval, sizeof(*val)))
                                       ^^^

As the kbuild bot noted, this needs to be a pointer. You could pass in
&timestamping.flags and you wouldn't need the 'val' variable at all.
Ok, I sent v5 to fix.
Sorry for the trouble. It seemed my test config missed to enable MPTCP.

Thanks.
-Mat

quoted
+			return -EFAULT;
+
+		memset(&timestamping, 0, sizeof(timestamping));
+		timestamping.flags = val;
+	} else {
+		return -EINVAL;
+	}

	ret = sock_setsockopt(sk->sk_socket, SOL_SOCKET, optname,
-			      KERNEL_SOCKPTR(&val), sizeof(val));
+			      KERNEL_SOCKPTR(&timestamping),
+			      sizeof(timestamping));
	if (ret)
		return ret;
@@ -224,7 +236,7 @@ static int
mptcp_setsockopt_sol_socket_timestamping(struct mptcp_sock *msk,
quoted
		struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
		bool slow = lock_sock_fast(ssk);

-		sock_set_timestamping(sk, optname, val);
+		sock_set_timestamping(sk, optname, timestamping);
		unlock_sock_fast(ssk, slow);
	}

--
2.25.1
--
Mat Martineau
Intel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help