]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
compat: Handle COMPAT_USE_64BIT_TIME in net/socket.c
authorH. Peter Anvin <hpa@zytor.com>
Mon, 20 Feb 2012 01:51:59 +0000 (17:51 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Mon, 20 Feb 2012 20:48:48 +0000 (12:48 -0800)
Use helper functions aware of COMPAT_USE_64BIT_TIME to write struct
timeval and struct timespec to userspace in net/socket.c.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
net/socket.c

index 28a96af484b421ee06fffbe87358c1811693c97f..5325d4c797c90e9b625bc79a9c66ceb3e143a01d 100644 (file)
@@ -2600,7 +2600,7 @@ void socket_seq_show(struct seq_file *seq)
 
 #ifdef CONFIG_COMPAT
 static int do_siocgstamp(struct net *net, struct socket *sock,
-                        unsigned int cmd, struct compat_timeval __user *up)
+                        unsigned int cmd, void __user *up)
 {
        mm_segment_t old_fs = get_fs();
        struct timeval ktv;
@@ -2609,15 +2609,14 @@ static int do_siocgstamp(struct net *net, struct socket *sock,
        set_fs(KERNEL_DS);
        err = sock_do_ioctl(net, sock, cmd, (unsigned long)&ktv);
        set_fs(old_fs);
-       if (!err) {
-               err = put_user(ktv.tv_sec, &up->tv_sec);
-               err |= __put_user(ktv.tv_usec, &up->tv_usec);
-       }
+       if (!err)
+               err = compat_put_timeval(up, &ktv);
+
        return err;
 }
 
 static int do_siocgstampns(struct net *net, struct socket *sock,
-                        unsigned int cmd, struct compat_timespec __user *up)
+                          unsigned int cmd, void __user *up)
 {
        mm_segment_t old_fs = get_fs();
        struct timespec kts;
@@ -2626,10 +2625,9 @@ static int do_siocgstampns(struct net *net, struct socket *sock,
        set_fs(KERNEL_DS);
        err = sock_do_ioctl(net, sock, cmd, (unsigned long)&kts);
        set_fs(old_fs);
-       if (!err) {
-               err = put_user(kts.tv_sec, &up->tv_sec);
-               err |= __put_user(kts.tv_nsec, &up->tv_nsec);
-       }
+       if (!err)
+               err = compat_put_timespec(up, &kts);
+
        return err;
 }