]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/socket.c
Merge git://git.infradead.org/users/eparis/audit
[karo-tx-linux.git] / net / socket.c
index 1bbc37b7a312ab768e3dd124eb50646cf52efa23..6b94633ca61d67e29faa58a7d42410e1ef678193 100644 (file)
@@ -69,7 +69,6 @@
 #include <linux/proc_fs.h>
 #include <linux/seq_file.h>
 #include <linux/mutex.h>
-#include <linux/wanrouter.h>
 #include <linux/if_bridge.h>
 #include <linux/if_frad.h>
 #include <linux/if_vlan.h>
@@ -370,16 +369,15 @@ struct file *sock_alloc_file(struct socket *sock, int flags, const char *dname)
 
        file = alloc_file(&path, FMODE_READ | FMODE_WRITE,
                  &socket_file_ops);
-       if (unlikely(!file)) {
+       if (unlikely(IS_ERR(file))) {
                /* drop dentry, keep inode */
                ihold(path.dentry->d_inode);
                path_put(&path);
-               return ERR_PTR(-ENFILE);
+               return file;
        }
 
        sock->file = file;
        file->f_flags = O_RDWR | (flags & O_NONBLOCK);
-       file->f_pos = 0;
        file->private_data = sock;
        return file;
 }
@@ -602,7 +600,7 @@ void sock_release(struct socket *sock)
 }
 EXPORT_SYMBOL(sock_release);
 
-int sock_tx_timestamp(struct sock *sk, __u8 *tx_flags)
+void sock_tx_timestamp(struct sock *sk, __u8 *tx_flags)
 {
        *tx_flags = 0;
        if (sock_flag(sk, SOCK_TIMESTAMPING_TX_HARDWARE))
@@ -611,7 +609,6 @@ int sock_tx_timestamp(struct sock *sk, __u8 *tx_flags)
                *tx_flags |= SKBTX_SW_TSTAMP;
        if (sock_flag(sk, SOCK_WIFI_STATUS))
                *tx_flags |= SKBTX_WIFI_STATUS;
-       return 0;
 }
 EXPORT_SYMBOL(sock_tx_timestamp);
 
@@ -684,16 +681,6 @@ int kernel_sendmsg(struct socket *sock, struct msghdr *msg,
 }
 EXPORT_SYMBOL(kernel_sendmsg);
 
-static int ktime2ts(ktime_t kt, struct timespec *ts)
-{
-       if (kt.tv64) {
-               *ts = ktime_to_timespec(kt);
-               return 1;
-       } else {
-               return 0;
-       }
-}
-
 /*
  * called from sock_recv_timestamp() if sock_flag(sk, SOCK_RCVTSTAMP)
  */
@@ -726,17 +713,15 @@ void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,
 
 
        memset(ts, 0, sizeof(ts));
-       if (skb->tstamp.tv64 &&
-           sock_flag(sk, SOCK_TIMESTAMPING_SOFTWARE)) {
-               skb_get_timestampns(skb, ts + 0);
+       if (sock_flag(sk, SOCK_TIMESTAMPING_SOFTWARE) &&
+           ktime_to_timespec_cond(skb->tstamp, ts + 0))
                empty = 0;
-       }
        if (shhwtstamps) {
                if (sock_flag(sk, SOCK_TIMESTAMPING_SYS_HARDWARE) &&
-                   ktime2ts(shhwtstamps->syststamp, ts + 1))
+                   ktime_to_timespec_cond(shhwtstamps->syststamp, ts + 1))
                        empty = 0;
                if (sock_flag(sk, SOCK_TIMESTAMPING_RAW_HARDWARE) &&
-                   ktime2ts(shhwtstamps->hwtstamp, ts + 2))
+                   ktime_to_timespec_cond(shhwtstamps->hwtstamp, ts + 2))
                        empty = 0;
        }
        if (!empty)
@@ -1175,15 +1160,6 @@ static int sock_mmap(struct file *file, struct vm_area_struct *vma)
 
 static int sock_close(struct inode *inode, struct file *filp)
 {
-       /*
-        *      It was possible the inode is NULL we were
-        *      closing an unfinished socket.
-        */
-
-       if (!inode) {
-               printk(KERN_DEBUG "sock_close: NULL inode\n");
-               return 0;
-       }
        sock_release(SOCKET_I(inode));
        return 0;
 }
@@ -2840,7 +2816,7 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
        }
 
        ifr = compat_alloc_user_space(buf_size);
-       rxnfc = (void *)ifr + ALIGN(sizeof(struct ifreq), 8);
+       rxnfc = (void __user *)ifr + ALIGN(sizeof(struct ifreq), 8);
 
        if (copy_in_user(&ifr->ifr_name, &ifr32->ifr_name, IFNAMSIZ))
                return -EFAULT;
@@ -2864,12 +2840,12 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
                        offsetof(struct ethtool_rxnfc, fs.ring_cookie));
 
                if (copy_in_user(rxnfc, compat_rxnfc,
-                                (void *)(&rxnfc->fs.m_ext + 1) -
-                                (void *)rxnfc) ||
+                                (void __user *)(&rxnfc->fs.m_ext + 1) -
+                                (void __user *)rxnfc) ||
                    copy_in_user(&rxnfc->fs.ring_cookie,
                                 &compat_rxnfc->fs.ring_cookie,
-                                (void *)(&rxnfc->fs.location + 1) -
-                                (void *)&rxnfc->fs.ring_cookie) ||
+                                (void __user *)(&rxnfc->fs.location + 1) -
+                                (void __user *)&rxnfc->fs.ring_cookie) ||
                    copy_in_user(&rxnfc->rule_cnt, &compat_rxnfc->rule_cnt,
                                 sizeof(rxnfc->rule_cnt)))
                        return -EFAULT;
@@ -2881,12 +2857,12 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
 
        if (convert_out) {
                if (copy_in_user(compat_rxnfc, rxnfc,
-                                (const void *)(&rxnfc->fs.m_ext + 1) -
-                                (const void *)rxnfc) ||
+                                (const void __user *)(&rxnfc->fs.m_ext + 1) -
+                                (const void __user *)rxnfc) ||
                    copy_in_user(&compat_rxnfc->fs.ring_cookie,
                                 &rxnfc->fs.ring_cookie,
-                                (const void *)(&rxnfc->fs.location + 1) -
-                                (const void *)&rxnfc->fs.ring_cookie) ||
+                                (const void __user *)(&rxnfc->fs.location + 1) -
+                                (const void __user *)&rxnfc->fs.ring_cookie) ||
                    copy_in_user(&compat_rxnfc->rule_cnt, &rxnfc->rule_cnt,
                                 sizeof(rxnfc->rule_cnt)))
                        return -EFAULT;