Partially revert "net: socket: implement 64-bit timestamps"
authorBen Hutchings <ben@decadent.org.uk>
Tue, 20 Aug 2019 17:12:35 +0000 (18:12 +0100)
committerSalvatore Bonaccorso <carnil@debian.org>
Mon, 7 Mar 2022 21:06:21 +0000 (21:06 +0000)
The introduction of SIOCGSTAMP{,NS}_OLD and move of SICOGSTAMP{,NS} to
a different header has caused build failures for various user-space
programs including qemu and suricata.  It also causes a test failure
for glibc.

For now, remove the _OLD suffix on the old ioctl numbers and require
programs using 64-bit timestamps to explicitly use SIOCGSTAMP{,NS}_NEW.

References: https://lore.kernel.org/lkml/af0eb47a-5b98-1bd9-3e8d-652e7f28b01f@de.ibm.com/
References: https://bugs.debian.org/934316
References: https://ci.debian.net/data/autopkgtest/testing/amd64/g/glibc/2772289/log.gz
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Topic bugfix/all
Gbp-Pq: Name partially-revert-net-socket-implement-64-bit-timestamps.patch

arch/alpha/include/uapi/asm/sockios.h
arch/mips/include/uapi/asm/sockios.h
arch/sh/include/uapi/asm/sockios.h
arch/xtensa/include/uapi/asm/sockios.h
include/uapi/asm-generic/sockios.h
include/uapi/linux/sockios.h
net/socket.c

index af92bc27c3be49c84b433a97ffd3b991e61d61a1..ba287e4b01bfb5e1bd137cf28c7e5410aa1271ec 100644 (file)
@@ -11,7 +11,7 @@
 #define SIOCSPGRP      _IOW('s', 8, pid_t)
 #define SIOCGPGRP      _IOR('s', 9, pid_t)
 
-#define SIOCGSTAMP_OLD 0x8906          /* Get stamp (timeval) */
-#define SIOCGSTAMPNS_OLD 0x8907                /* Get stamp (timespec) */
+#define SIOCGSTAMP     0x8906          /* Get stamp (timeval) */
+#define SIOCGSTAMPNS   0x8907          /* Get stamp (timespec) */
 
 #endif /* _ASM_ALPHA_SOCKIOS_H */
index 66f60234f290b5a1ae3e0788dccf1e0283d80ce5..5b40a88593fa8180e9af018d98535a6717bef614 100644 (file)
@@ -21,7 +21,7 @@
 #define SIOCSPGRP      _IOW('s', 8, pid_t)
 #define SIOCGPGRP      _IOR('s', 9, pid_t)
 
-#define SIOCGSTAMP_OLD 0x8906          /* Get stamp (timeval) */
-#define SIOCGSTAMPNS_OLD 0x8907                /* Get stamp (timespec) */
+#define SIOCGSTAMP     0x8906          /* Get stamp (timeval) */
+#define SIOCGSTAMPNS   0x8907          /* Get stamp (timespec) */
 
 #endif /* _ASM_SOCKIOS_H */
index ef01ced9e16963fd0f678014d49e4a10f5fe30bb..24a67f46b7031515b9e9bd0a01fbbbe646714a8d 100644 (file)
@@ -12,7 +12,6 @@
 #define SIOCSPGRP      _IOW('s', 8, pid_t)
 #define SIOCGPGRP      _IOR('s', 9, pid_t)
 
-#define SIOCGSTAMP_OLD _IOR('s', 100, struct __kernel_old_timeval) /* Get stamp (timeval) */
-#define SIOCGSTAMPNS_OLD _IOR('s', 101, struct __kernel_old_timespec) /* Get stamp (timespec) */
-
+#define SIOCGSTAMP     _IOR('s', 100, struct __kernel_old_timeval) /* Get stamp (timeval) */
+#define SIOCGSTAMPNS   _IOR('s', 101, struct __kernel_old_timespec) /* Get stamp (timespec) */
 #endif /* __ASM_SH_SOCKIOS_H */
index 1a1f58f4b75a293cf355a5638ad97a06b0de7626..fb8ac36071894fd47a09f0a2970f046ba480c458 100644 (file)
@@ -26,7 +26,7 @@
 #define SIOCSPGRP      _IOW('s', 8, pid_t)
 #define SIOCGPGRP      _IOR('s', 9, pid_t)
 
-#define SIOCGSTAMP_OLD 0x8906          /* Get stamp (timeval) */
-#define SIOCGSTAMPNS_OLD 0x8907                /* Get stamp (timespec) */
+#define SIOCGSTAMP     0x8906          /* Get stamp (timeval) */
+#define SIOCGSTAMPNS   0x8907          /* Get stamp (timespec) */
 
 #endif /* _XTENSA_SOCKIOS_H */
index 44fa3ed7048322bf072e4ed21945f5ed9415e318..64f658c7cec2a90710394ca8b827bfe257bebc2e 100644 (file)
@@ -8,7 +8,7 @@
 #define FIOGETOWN      0x8903
 #define SIOCGPGRP      0x8904
 #define SIOCATMARK     0x8905
-#define SIOCGSTAMP_OLD 0x8906          /* Get stamp (timeval) */
-#define SIOCGSTAMPNS_OLD 0x8907                /* Get stamp (timespec) */
+#define SIOCGSTAMP     0x8906          /* Get stamp (timeval) */
+#define SIOCGSTAMPNS   0x8907          /* Get stamp (timespec) */
 
 #endif /* __ASM_GENERIC_SOCKIOS_H */
index 7d1bccbbef781f2c0064b568ee22dba135b5b87e..ac2e9d9e1f418fa7541adb9c993c1b75e126ac27 100644 (file)
@@ -19,7 +19,6 @@
 #ifndef _LINUX_SOCKIOS_H
 #define _LINUX_SOCKIOS_H
 
-#include <asm/bitsperlong.h>
 #include <asm/sockios.h>
 
 /* Linux-specific socket ioctls */
 /* Get stamp (timespec) */
 #define SIOCGSTAMPNS_NEW _IOR(SOCK_IOC_TYPE, 0x07, long long[2])
 
-#if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
-/* on 64-bit and x32, avoid the ?: operator */
-#define SIOCGSTAMP     SIOCGSTAMP_OLD
-#define SIOCGSTAMPNS   SIOCGSTAMPNS_OLD
-#else
-#define SIOCGSTAMP     ((sizeof(struct timeval))  == 8 ? \
-                        SIOCGSTAMP_OLD   : SIOCGSTAMP_NEW)
-#define SIOCGSTAMPNS   ((sizeof(struct timespec)) == 8 ? \
-                        SIOCGSTAMPNS_OLD : SIOCGSTAMPNS_NEW)
-#endif
-
 /* Routing table calls. */
 #define SIOCADDRT      0x890B          /* add routing table entry      */
 #define SIOCDELRT      0x890C          /* delete routing table entry   */
index d52c265ad449b473dea408fb5a2ceb5bad9f6fa8..d20d33eb2b7e7ca91e27e9c4e28b741f9d7e3a79 100644 (file)
@@ -1163,14 +1163,14 @@ static long sock_ioctl(struct file *file, unsigned cmd, unsigned long arg)
 
                        err = open_related_ns(&net->ns, get_net_ns);
                        break;
-               case SIOCGSTAMP_OLD:
-               case SIOCGSTAMPNS_OLD:
+               case SIOCGSTAMP:
+               case SIOCGSTAMPNS:
                        if (!sock->ops->gettstamp) {
                                err = -ENOIOCTLCMD;
                                break;
                        }
                        err = sock->ops->gettstamp(sock, argp,
-                                                  cmd == SIOCGSTAMP_OLD,
+                                                  cmd == SIOCGSTAMP,
                                                   !IS_ENABLED(CONFIG_64BIT));
                        break;
                case SIOCGSTAMP_NEW:
@@ -3273,11 +3273,11 @@ static int compat_sock_ioctl_trans(struct file *file, struct socket *sock,
        case SIOCGIFMAP:
        case SIOCSIFMAP:
                return compat_sioc_ifmap(net, cmd, argp);
-       case SIOCGSTAMP_OLD:
-       case SIOCGSTAMPNS_OLD:
+       case SIOCGSTAMP:
+       case SIOCGSTAMPNS:
                if (!sock->ops->gettstamp)
                        return -ENOIOCTLCMD;
-               return sock->ops->gettstamp(sock, argp, cmd == SIOCGSTAMP_OLD,
+               return sock->ops->gettstamp(sock, argp, cmd == SIOCGSTAMP,
                                            !COMPAT_USE_64BIT_TIME);
 
        case SIOCETHTOOL: