act_connmark: Add missing dependency on NF_CONNTRACK_MARK
[cascardo/linux.git] / net / socket.c
index 8809afc..9fcf15b 100644 (file)
@@ -113,7 +113,6 @@ unsigned int sysctl_net_busy_read __read_mostly;
 unsigned int sysctl_net_busy_poll __read_mostly;
 #endif
 
-static int sock_no_open(struct inode *irrelevant, struct file *dontcare);
 static ssize_t sock_aio_read(struct kiocb *iocb, const struct iovec *iov,
                         unsigned long nr_segs, loff_t pos);
 static ssize_t sock_aio_write(struct kiocb *iocb, const struct iovec *iov,
@@ -151,7 +150,6 @@ static const struct file_operations socket_file_ops = {
        .compat_ioctl = compat_sock_ioctl,
 #endif
        .mmap =         sock_mmap,
-       .open =         sock_no_open,   /* special open code to disallow open via /proc */
        .release =      sock_close,
        .fasync =       sock_fasync,
        .sendpage =     sock_sendpage,
@@ -374,7 +372,6 @@ struct file *sock_alloc_file(struct socket *sock, int flags, const char *dname)
        path.mnt = mntget(sock_mnt);
 
        d_instantiate(path.dentry, SOCK_INODE(sock));
-       SOCK_INODE(sock)->i_fop = &socket_file_ops;
 
        file = alloc_file(&path, FMODE_READ | FMODE_WRITE,
                  &socket_file_ops);
@@ -559,23 +556,6 @@ static struct socket *sock_alloc(void)
        return sock;
 }
 
-/*
- *     In theory you can't get an open on this inode, but /proc provides
- *     a back door. Remember to keep it shut otherwise you'll let the
- *     creepy crawlies in.
- */
-
-static int sock_no_open(struct inode *irrelevant, struct file *dontcare)
-{
-       return -ENXIO;
-}
-
-const struct file_operations bad_sock_fops = {
-       .owner = THIS_MODULE,
-       .open = sock_no_open,
-       .llseek = noop_llseek,
-};
-
 /**
  *     sock_release    -       close a socket
  *     @sock: socket to close
@@ -902,20 +882,15 @@ static ssize_t do_sock_read(struct msghdr *msg, struct kiocb *iocb,
                unsigned long nr_segs)
 {
        struct socket *sock = file->private_data;
-       size_t size = 0;
-       int i;
-
-       for (i = 0; i < nr_segs; i++)
-               size += iov[i].iov_len;
 
        msg->msg_name = NULL;
        msg->msg_namelen = 0;
        msg->msg_control = NULL;
        msg->msg_controllen = 0;
-       iov_iter_init(&msg->msg_iter, READ, iov, nr_segs, size);
+       iov_iter_init(&msg->msg_iter, READ, iov, nr_segs, iocb->ki_nbytes);
        msg->msg_flags = (file->f_flags & O_NONBLOCK) ? MSG_DONTWAIT : 0;
 
-       return __sock_recvmsg(iocb, sock, msg, size, msg->msg_flags);
+       return __sock_recvmsg(iocb, sock, msg, iocb->ki_nbytes, msg->msg_flags);
 }
 
 static ssize_t sock_aio_read(struct kiocb *iocb, const struct iovec *iov,
@@ -941,22 +916,17 @@ static ssize_t do_sock_write(struct msghdr *msg, struct kiocb *iocb,
                        unsigned long nr_segs)
 {
        struct socket *sock = file->private_data;
-       size_t size = 0;
-       int i;
-
-       for (i = 0; i < nr_segs; i++)
-               size += iov[i].iov_len;
 
        msg->msg_name = NULL;
        msg->msg_namelen = 0;
        msg->msg_control = NULL;
        msg->msg_controllen = 0;
-       iov_iter_init(&msg->msg_iter, WRITE, iov, nr_segs, size);
+       iov_iter_init(&msg->msg_iter, WRITE, iov, nr_segs, iocb->ki_nbytes);
        msg->msg_flags = (file->f_flags & O_NONBLOCK) ? MSG_DONTWAIT : 0;
        if (sock->type == SOCK_SEQPACKET)
                msg->msg_flags |= MSG_EOR;
 
-       return __sock_sendmsg(iocb, sock, msg, size);
+       return __sock_sendmsg(iocb, sock, msg, iocb->ki_nbytes);
 }
 
 static ssize_t sock_aio_write(struct kiocb *iocb, const struct iovec *iov,