Re: [PATCH net-next v4 00/12] net: y2038-safe socket timestamps

From: Willem de Bruijn
Date: Fri Feb 01 2019 - 13:59:42 EST


On Fri, Feb 1, 2019 at 7:47 AM Deepa Dinamani <deepa.kernel@xxxxxxxxx> wrote:
>
> The series introduces new socket timestamps that are
> y2038 safe.
>
> The time data types used for the existing socket timestamp
> options: SO_TIMESTAMP, SO_TIMESTAMPNS and SO_TIMESTAMPING
> are not y2038 safe. The series introduces SO_TIMESTAMP_NEW,
> SO_TIMESTAMPNS_NEW and SO_TIMESTAMPING_NEW to replace these.
> These new timestamps can be used on all architectures.
>
> The alternative considered was to extend the sys_setsockopt()
> by using the flags. We did not receive any strong opinions about
> either of the approaches. Hence, this was chosen, as glibc folks
> preferred this.
>
> The series does not deal with updating the internal kernel socket
> calls like rxrpc to make them y2038 safe. This will be dealt
> with separately.
>
> Note that the timestamps behavior already does not match the
> man page specific behavior:
> SIOCGSTAMP
> This ioctl should only be used if the socket option SO_TIMESTAMP
> is not set on the socket. Otherwise, it returns the timestamp of
> the last packet that was received while SO_TIMESTAMP was not set,
> or it fails if no such packet has been received,
> (i.e., ioctl(2) returns -1 with errno set to ENOENT).
>
> The recommendation is to update the man page to remove the above statement.
>
> The overview of the socket timestamp series is as below:
> 1. Delete asm specific socket.h when possible.
> 2. Support SO/SCM_TIMESTAMP* options only in userspace.
> 3. Rename current SO/SCM_TIMESTAMP* to SO/SCM_TIMESTAMP*_OLD.
> 3. Alter socket options so that SOCK_RCVTSTAMPNS does
> not rely on SOCK_RCVTSTAMP.
> 4. Introduce y2038 safe types for socket timestamp.
> 5. Introduce new y2038 safe socket options SO/SCM_TIMESTAMP*_NEW.
> 6. Intorduce new y2038 safe socket timeout options.
>
> Changes since v3:
> * Rebased onto net-next and fixups as per review comments
> * Merged the socket timeout series
> * Integrated Arnd's patch to simplify compat handling of timeout syscalls
>
> Changes since v2:
> * Removed extra functions to reduce diff churn as per code review
>
> Changes since v1:
> * Dropped the change to disentangle sock flags
> * Renamed sock_timeval to __kernel_sock_timeval
> * Updated a few comments
> * Added documentation changes
>
> Arnd Bergmann (1):
> socket: move compat timeout handling into sock.c
>
> Deepa Dinamani (11):
> selftests: add missing include unistd
> arch: Use asm-generic/socket.h when possible
> sockopt: Rename SO_TIMESTAMP* to SO_TIMESTAMP*_OLD
> arch: sparc: Override struct __kernel_old_timeval
> socket: Use old_timeval types for socket timestamps
> socket: Add struct __kernel_sock_timeval
> socket: Add SO_TIMESTAMP[NS]_NEW
> socket: Add SO_TIMESTAMPING_NEW
> socket: Update timestamping Documentation
> socket: Rename SO_RCVTIMEO/ SO_SNDTIMEO with _OLD suffixes
> sock: Add SO_RCVTIMEO_NEW and SO_SNDTIMEO_NEW
>
> Documentation/networking/timestamping.txt | 43 ++++-
> arch/alpha/include/uapi/asm/socket.h | 47 ++++--
> arch/ia64/include/uapi/asm/Kbuild | 1 +
> arch/ia64/include/uapi/asm/socket.h | 122 --------------
> arch/mips/include/uapi/asm/socket.h | 47 ++++--
> arch/parisc/include/uapi/asm/socket.h | 46 ++++--
> arch/powerpc/include/uapi/asm/socket.h | 4 +-
> arch/s390/include/uapi/asm/Kbuild | 1 +
> arch/s390/include/uapi/asm/socket.h | 119 --------------
> arch/sparc/include/uapi/asm/posix_types.h | 10 ++
> arch/sparc/include/uapi/asm/socket.h | 49 ++++--
> arch/x86/include/uapi/asm/Kbuild | 1 +
> arch/x86/include/uapi/asm/socket.h | 1 -
> arch/xtensa/include/asm/Kbuild | 1 +
> arch/xtensa/include/uapi/asm/Kbuild | 1 +
> arch/xtensa/include/uapi/asm/socket.h | 124 --------------
> drivers/isdn/mISDN/socket.c | 2 +-
> fs/dlm/lowcomms.c | 4 +-
> include/linux/skbuff.h | 24 ++-
> include/linux/socket.h | 8 +
> include/net/sock.h | 1 +
> include/uapi/asm-generic/socket.h | 48 ++++--
> include/uapi/linux/errqueue.h | 4 +
> include/uapi/linux/time.h | 7 +
> net/bluetooth/hci_sock.c | 4 +-
> net/compat.c | 78 +--------
> net/core/scm.c | 27 ++++
> net/core/sock.c | 151 +++++++++++++-----
> net/ipv4/tcp.c | 61 ++++---
> net/rds/af_rds.c | 10 +-
> net/rds/recv.c | 18 ++-
> net/rxrpc/local_object.c | 2 +-
> net/smc/af_smc.c | 3 +-
> net/socket.c | 50 ++++--
> net/vmw_vsock/af_vsock.c | 4 +-
> .../networking/timestamping/rxtimestamp.c | 1 +
> 36 files changed, 541 insertions(+), 583 deletions(-)
> delete mode 100644 arch/ia64/include/uapi/asm/socket.h
> delete mode 100644 arch/s390/include/uapi/asm/socket.h
> delete mode 100644 arch/x86/include/uapi/asm/socket.h
> delete mode 100644 arch/xtensa/include/uapi/asm/socket.h
>
> --
> 2.17.1
>

For the series:

Acked-by: Willem de Bruijn <willemb@xxxxxxxxxx>