aboutsummaryrefslogtreecommitdiffstats
path: root/net/socket.c
diff options
context:
space:
mode:
authortadeusz.struk@intel.com <tadeusz.struk@intel.com>2015-03-19 15:31:25 -0400
committerDavid S. Miller <davem@davemloft.net>2015-03-23 16:41:36 -0400
commit0345f93138b2224e0d7ce91fcffdb3dd23f364d7 (patch)
tree7cd37a309382dfc7dd6b028c2b1a88a181692a1c /net/socket.c
parent8f2ddaac302a8ca364cb04efb19cd3b5cd058910 (diff)
net: socket: add support for async operations
Add support for async operations. Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/socket.c')
-rw-r--r--net/socket.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/net/socket.c b/net/socket.c
index 3e776776f42c..073809f4125f 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -798,7 +798,8 @@ static ssize_t sock_read_iter(struct kiocb *iocb, struct iov_iter *to)
798{ 798{
799 struct file *file = iocb->ki_filp; 799 struct file *file = iocb->ki_filp;
800 struct socket *sock = file->private_data; 800 struct socket *sock = file->private_data;
801 struct msghdr msg = {.msg_iter = *to}; 801 struct msghdr msg = {.msg_iter = *to,
802 .msg_iocb = iocb};
802 ssize_t res; 803 ssize_t res;
803 804
804 if (file->f_flags & O_NONBLOCK) 805 if (file->f_flags & O_NONBLOCK)
@@ -819,7 +820,8 @@ static ssize_t sock_write_iter(struct kiocb *iocb, struct iov_iter *from)
819{ 820{
820 struct file *file = iocb->ki_filp; 821 struct file *file = iocb->ki_filp;
821 struct socket *sock = file->private_data; 822 struct socket *sock = file->private_data;
822 struct msghdr msg = {.msg_iter = *from}; 823 struct msghdr msg = {.msg_iter = *from,
824 .msg_iocb = iocb};
823 ssize_t res; 825 ssize_t res;
824 826
825 if (iocb->ki_pos != 0) 827 if (iocb->ki_pos != 0)
@@ -1894,6 +1896,8 @@ static ssize_t copy_msghdr_from_user(struct msghdr *kmsg,
1894 if (nr_segs > UIO_MAXIOV) 1896 if (nr_segs > UIO_MAXIOV)
1895 return -EMSGSIZE; 1897 return -EMSGSIZE;
1896 1898
1899 kmsg->msg_iocb = NULL;
1900
1897 err = rw_copy_check_uvector(save_addr ? READ : WRITE, 1901 err = rw_copy_check_uvector(save_addr ? READ : WRITE,
1898 uiov, nr_segs, 1902 uiov, nr_segs,
1899 UIO_FASTIOV, *iov, iov); 1903 UIO_FASTIOV, *iov, iov);