]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
socket: Use old_timeval types for socket timestamps
authorDeepa Dinamani <deepa.kernel@gmail.com>
Sat, 2 Feb 2019 15:34:48 +0000 (07:34 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 3 Feb 2019 19:17:30 +0000 (11:17 -0800)
As part of y2038 solution, all internal uses of
struct timeval are replaced by struct __kernel_old_timeval
and struct compat_timeval by struct old_timeval32.
Make socket timestamps use these new types.

This is mainly to be able to verify that the kernel build
is y2038 safe when such non y2038 safe types are not
supported anymore.

Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
Acked-by: Willem de Bruijn <willemb@google.com>
Cc: isdn@linux-pingi.de
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/isdn/mISDN/socket.c
include/linux/skbuff.h
net/bluetooth/hci_sock.c
net/compat.c
net/ipv4/tcp.c
net/rds/recv.c
net/socket.c

index 15d3ca37669a4a66702d3fd8ee91a0e612637e7a..4ab8b1b6608f7136365f91d713f65647a8271296 100644 (file)
@@ -103,7 +103,7 @@ mISDN_ctrl(struct mISDNchannel *ch, u_int cmd, void *arg)
 static inline void
 mISDN_sock_cmsg(struct sock *sk, struct msghdr *msg, struct sk_buff *skb)
 {
-       struct timeval  tv;
+       struct __kernel_old_timeval     tv;
 
        if (_pms(sk)->cmask & MISDN_TIME_STAMP) {
                skb_get_timestamp(skb, &tv);
index c34595374e930c3aff251cddd021238e4018357a..4001611a4c9fbf6b40e40005744fbeb3cc596c7b 100644 (file)
@@ -3486,16 +3486,16 @@ static inline ktime_t skb_get_ktime(const struct sk_buff *skb)
 /**
  *     skb_get_timestamp - get timestamp from a skb
  *     @skb: skb to get stamp from
- *     @stamp: pointer to struct timeval to store stamp in
+ *     @stamp: pointer to struct __kernel_old_timeval to store stamp in
  *
  *     Timestamps are stored in the skb as offsets to a base timestamp.
  *     This function converts the offset back to a struct timeval and stores
  *     it in stamp.
  */
 static inline void skb_get_timestamp(const struct sk_buff *skb,
-                                    struct timeval *stamp)
+                                    struct __kernel_old_timeval *stamp)
 {
-       *stamp = ktime_to_timeval(skb->tstamp);
+       *stamp = ns_to_kernel_old_timeval(skb->tstamp);
 }
 
 static inline void skb_get_timestampns(const struct sk_buff *skb,
index 1506e1632394acf06e9f5873d045bd394e5b3059..65228bfa44872113f9a28586463bee1e7f9ca945 100644 (file)
@@ -1383,9 +1383,9 @@ static void hci_sock_cmsg(struct sock *sk, struct msghdr *msg,
 
        if (mask & HCI_CMSG_TSTAMP) {
 #ifdef CONFIG_COMPAT
-               struct compat_timeval ctv;
+               struct old_timeval32 ctv;
 #endif
-               struct timeval tv;
+               struct __kernel_old_timeval tv;
                void *data;
                int len;
 
index ccf93cd0e49b63a4ab8bf971370d358407d64a8c..9629f053d4fab75506e5cfb8326d7bc106356d41 100644 (file)
@@ -209,8 +209,8 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat
 {
        struct compat_cmsghdr __user *cm = (struct compat_cmsghdr __user *) kmsg->msg_control;
        struct compat_cmsghdr cmhdr;
-       struct compat_timeval ctv;
-       struct compat_timespec cts[3];
+       struct old_timeval32 ctv;
+       struct old_timespec32 cts[3];
        int cmlen;
 
        if (cm == NULL || kmsg->msg_controllen < sizeof(*cm)) {
@@ -220,7 +220,7 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat
 
        if (!COMPAT_USE_64BIT_TIME) {
                if (level == SOL_SOCKET && type == SO_TIMESTAMP_OLD) {
-                       struct timeval *tv = (struct timeval *)data;
+                       struct __kernel_old_timeval *tv = (struct __kernel_old_timeval *)data;
                        ctv.tv_sec = tv->tv_sec;
                        ctv.tv_usec = tv->tv_usec;
                        data = &ctv;
index e29aec59cad127f7cce842dd18c384c999b91352..3ce41b04c0f0abfc5e6613cda6e225f7125b8132 100644 (file)
@@ -1861,7 +1861,7 @@ static void tcp_update_recv_tstamps(struct sk_buff *skb,
 static void tcp_recv_timestamp(struct msghdr *msg, const struct sock *sk,
                               struct scm_timestamping *tss)
 {
-       struct timeval tv;
+       struct __kernel_old_timeval tv;
        bool has_timestamping = false;
 
        if (tss->ts[0].tv_sec || tss->ts[0].tv_nsec) {
index 04e30d63a1593dea30fd13016faf7da88c9ba908..435bf2320cd3aa5b968c6d02e44a6ae71614a62f 100644 (file)
@@ -549,7 +549,7 @@ static int rds_cmsg_recv(struct rds_incoming *inc, struct msghdr *msg,
 
        if ((inc->i_rx_tstamp != 0) &&
            sock_flag(rds_rs_to_sk(rs), SOCK_RCVTSTAMP)) {
-               struct timeval tv = ktime_to_timeval(inc->i_rx_tstamp);
+               struct __kernel_old_timeval tv = ns_to_kernel_old_timeval(inc->i_rx_tstamp);
                ret = put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMP_OLD,
                               sizeof(tv), &tv);
                if (ret)
index 5087f9e40f3a790b888e0e8bc9ed4c020cafb85d..9cc281cdb9d94b08eaba1c89fc506c53b34317a7 100644 (file)
@@ -719,7 +719,7 @@ void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,
 
        if (need_software_tstamp) {
                if (!sock_flag(sk, SOCK_RCVTSTAMPNS)) {
-                       struct timeval tv;
+                       struct __kernel_old_timeval tv;
                        skb_get_timestamp(skb, &tv);
                        put_cmsg(msg, SOL_SOCKET, SO_TIMESTAMP_OLD,
                                 sizeof(tv), &tv);