From: Christian Eggers <ceggers@arri.de>
To: "David S . Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Deepa Dinamani <deepa.kernel@gmail.com>,
Willem de Bruijn <willemb@google.com>
Cc: Christoph Hellwig <hch@lst.de>, <netdev@vger.kernel.org>,
<linux-kernel@vger.kernel.org>,
Christian Eggers <ceggers@arri.de>
Subject: [PATCH net v2 2/2] socket: don't clear SOCK_TSTAMP_NEW when SO_TIMESTAMPNS is disabled
Date: Mon, 12 Oct 2020 11:35:42 +0200 [thread overview]
Message-ID: <20201012093542.15504-2-ceggers@arri.de> (raw)
In-Reply-To: <20201012093542.15504-1-ceggers@arri.de>
SOCK_TSTAMP_NEW (timespec64 instead of timespec) is also used for
hardware time stamps (configured via SO_TIMESTAMPING_NEW).
User space (ptp4l) first configures hardware time stamping via
SO_TIMESTAMPING_NEW which sets SOCK_TSTAMP_NEW. In the next step, ptp4l
disables SO_TIMESTAMPNS(_NEW) (software time stamps), but this must not
switch hardware time stamps back to "32 bit mode".
This problem happens on 32 bit platforms were the libc has already
switched to struct timespec64 (from SO_TIMExxx_OLD to SO_TIMExxx_NEW
socket options). ptp4l complains with "missing timestamp on transmitted
peer delay request" because the wrong format is received (and
discarded).
Fixes: 887feae36aee ("socket: Add SO_TIMESTAMP[NS]_NEW")
Fixes: 783da70e8396 ("net: add sock_enable_timestamps")
Signed-off-by: Christian Eggers <ceggers@arri.de>
Acked-by: Willem de Bruijn <willemb@google.com>
Acked-by: Deepa Dinamani <deepa.kernel@gmail.com>
---
v2:
-----
- Added ACKs from Willem and Deepa
On Saturday, 10 October 2020, 05:38:56 CEST, Deepa Dinamani wrote:
> On Fri, Oct 9, 2020 at 5:35 PM Willem de Bruijn <willemdebruijn.kernel@gmail.com> wrote:
> > As this commit message shows, with SO_TIMESTAMP(NS) and
> > SO_TIMESTAMPING that can be independently turned on and off, disabling
> > one can incorrectly switch modes while the other is still active.
>
> This will not help the case when a child process that inherits the fd
> and then sets SO_TIMESTAMP*_OLD/NEW on it, while the parent uses the
> other version.
> One of the two processes might still be surprised. But, child and
> parent actively using the same socket fd might be expecting trouble
> already.
Usually the decision between SO_TIMESTAMP*_OLD/NEW will be done at compile
time (trough the system C library headers). For a typical "distribution" it
should be quite unlikely that two programs will be compiled using different
settings.
net/core/sock.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/net/core/sock.c b/net/core/sock.c
index 669cf9b8bb44..f4236c7512b5 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -757,7 +757,6 @@ static void __sock_set_timestamps(struct sock *sk, bool val, bool new, bool ns)
} else {
sock_reset_flag(sk, SOCK_RCVTSTAMP);
sock_reset_flag(sk, SOCK_RCVTSTAMPNS);
- sock_reset_flag(sk, SOCK_TSTAMP_NEW);
}
}
--
Christian Eggers
Embedded software developer
Arnold & Richter Cine Technik GmbH & Co. Betriebs KG
Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: HRA 57918
Persoenlich haftender Gesellschafter: Arnold & Richter Cine Technik GmbH
Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: HRB 54477
Geschaeftsfuehrer: Dr. Michael Neuhaeuser; Stephan Schenk; Walter Trauninger; Markus Zeiler
next prev parent reply other threads:[~2020-10-12 9:37 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-12 9:35 [PATCH net v2 1/2] socket: fix option SO_TIMESTAMPING_NEW Christian Eggers
2020-10-12 9:35 ` Christian Eggers [this message]
2020-10-12 13:37 ` Willem de Bruijn
2020-10-13 5:10 ` Deepa Dinamani
2020-10-14 0:22 ` Jakub Kicinski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201012093542.15504-2-ceggers@arri.de \
--to=ceggers@arri.de \
--cc=davem@davemloft.net \
--cc=deepa.kernel@gmail.com \
--cc=hch@lst.de \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=willemb@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®