Message ID | 20210707092731.2499-1-slyfox@gentoo.org |
---|---|
State | New |
Headers | show |
Series | net: core: fix SO_TIMESTAMP_* option setting | expand |
On Wed, Jul 7, 2021 at 11:27 AM Sergei Trofimovich <slyfox@gentoo.org> wrote: > > I noticed the problem as a systemd-timesyncd (and ntpsec) sync failures: > > systemd-timesyncd[586]: Timed out waiting for reply from ... > systemd-timesyncd[586]: Invalid packet timestamp. > > Bisected it down to commit 371087aa476 > ("sock: expose so_timestamp options for mptcp"). > > The commit should be a no-op but it accidentally reordered option type > and option value: > > +void sock_set_timestamp(struct sock *sk, int optname, bool valbool); > ... > - __sock_set_timestamps(sk, valbool, true, true); > + sock_set_timestamp(sk, valbool, optname); > > Tested the fix on systemd-timesyncd. The sync failures went away. > > CC: Paolo Abeni <pabeni@redhat.com> > CC: Florian Westphal <fw@strlen.de> > CC: Mat Martineau <mathew.j.martineau@linux.intel.com> > CC: David S. Miller <davem@davemloft.net> > CC: Jakub Kicinski <kuba@kernel.org> > CC: Eric Dumazet <edumazet@google.com> > Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org> > --- I think this has been fixed five days ago in https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/commit/?id=81b4a0cc7565b08cadd0d02bae3434f127d1d72a
On Wed, 7 Jul 2021 14:32:01 +0200 Eric Dumazet <edumazet@google.com> wrote: > On Wed, Jul 7, 2021 at 11:27 AM Sergei Trofimovich <slyfox@gentoo.org> wrote: > > > > I noticed the problem as a systemd-timesyncd (and ntpsec) sync failures: > > > > systemd-timesyncd[586]: Timed out waiting for reply from ... > > systemd-timesyncd[586]: Invalid packet timestamp. > > > > Bisected it down to commit 371087aa476 > > ("sock: expose so_timestamp options for mptcp"). > > > > The commit should be a no-op but it accidentally reordered option type > > and option value: > > > > +void sock_set_timestamp(struct sock *sk, int optname, bool valbool); > > ... > > - __sock_set_timestamps(sk, valbool, true, true); > > + sock_set_timestamp(sk, valbool, optname); > > > > Tested the fix on systemd-timesyncd. The sync failures went away. > > > > CC: Paolo Abeni <pabeni@redhat.com> > > CC: Florian Westphal <fw@strlen.de> > > CC: Mat Martineau <mathew.j.martineau@linux.intel.com> > > CC: David S. Miller <davem@davemloft.net> > > CC: Jakub Kicinski <kuba@kernel.org> > > CC: Eric Dumazet <edumazet@google.com> > > Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org> > > --- > > I think this has been fixed five days ago in > > https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/commit/?id=81b4a0cc7565b08cadd0d02bae3434f127d1d72a Aha, looks good! Thank you!
diff --git a/net/core/sock.c b/net/core/sock.c index ba1c0f75cd45..060892372ac5 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -1068,7 +1068,7 @@ int sock_setsockopt(struct socket *sock, int level, int optname, case SO_TIMESTAMP_NEW: case SO_TIMESTAMPNS_OLD: case SO_TIMESTAMPNS_NEW: - sock_set_timestamp(sk, valbool, optname); + sock_set_timestamp(sk, optname, valbool); break; case SO_TIMESTAMPING_NEW:
I noticed the problem as a systemd-timesyncd (and ntpsec) sync failures: systemd-timesyncd[586]: Timed out waiting for reply from ... systemd-timesyncd[586]: Invalid packet timestamp. Bisected it down to commit 371087aa476 ("sock: expose so_timestamp options for mptcp"). The commit should be a no-op but it accidentally reordered option type and option value: +void sock_set_timestamp(struct sock *sk, int optname, bool valbool); ... - __sock_set_timestamps(sk, valbool, true, true); + sock_set_timestamp(sk, valbool, optname); Tested the fix on systemd-timesyncd. The sync failures went away. CC: Paolo Abeni <pabeni@redhat.com> CC: Florian Westphal <fw@strlen.de> CC: Mat Martineau <mathew.j.martineau@linux.intel.com> CC: David S. Miller <davem@davemloft.net> CC: Jakub Kicinski <kuba@kernel.org> CC: Eric Dumazet <edumazet@google.com> Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org> --- net/core/sock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)