Lines 233-245
Link Here
|
233 |
char __user *optval, int __user * optlen); |
233 |
char __user *optval, int __user * optlen); |
234 |
|
234 |
|
235 |
static int VSockVmciDgramSendmsg(struct kiocb *kiocb, |
235 |
static int VSockVmciDgramSendmsg(struct kiocb *kiocb, |
236 |
struct socket *sock, struct msghdr *msg, size_t len); |
236 |
struct socket *sock, struct user_msghdr *msg, size_t len); |
237 |
static int VSockVmciDgramRecvmsg(struct kiocb *kiocb, struct socket *sock, |
237 |
static int VSockVmciDgramRecvmsg(struct kiocb *kiocb, struct socket *sock, |
238 |
struct msghdr *msg, size_t len, int flags); |
238 |
struct user_msghdr *msg, size_t len, int flags); |
239 |
static int VSockVmciStreamSendmsg(struct kiocb *kiocb, |
239 |
static int VSockVmciStreamSendmsg(struct kiocb *kiocb, |
240 |
struct socket *sock, struct msghdr *msg, size_t len); |
240 |
struct socket *sock, struct user_msghdr *msg, size_t len); |
241 |
static int VSockVmciStreamRecvmsg(struct kiocb *kiocb, struct socket *sock, |
241 |
static int VSockVmciStreamRecvmsg(struct kiocb *kiocb, struct socket *sock, |
242 |
struct msghdr *msg, size_t len, int flags); |
242 |
struct user_msghdr *msg, size_t len, int flags); |
243 |
|
243 |
|
244 |
static int VSockVmciCreate( |
244 |
static int VSockVmciCreate( |
245 |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24) |
245 |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24) |
Lines 4195-4201
Link Here
|
4195 |
static int |
4195 |
static int |
4196 |
VSockVmciDgramSendmsg(struct kiocb *kiocb, // UNUSED |
4196 |
VSockVmciDgramSendmsg(struct kiocb *kiocb, // UNUSED |
4197 |
struct socket *sock, // IN: socket to send on |
4197 |
struct socket *sock, // IN: socket to send on |
4198 |
struct msghdr *msg, // IN: message to send |
4198 |
struct user_msghdr *msg, // IN: message to send |
4199 |
size_t len) // IN: length of message |
4199 |
size_t len) // IN: length of message |
4200 |
{ |
4200 |
{ |
4201 |
int err; |
4201 |
int err; |
Lines 4525-4531
Link Here
|
4525 |
static int |
4525 |
static int |
4526 |
VSockVmciStreamSendmsg(struct kiocb *kiocb, // UNUSED |
4526 |
VSockVmciStreamSendmsg(struct kiocb *kiocb, // UNUSED |
4527 |
struct socket *sock, // IN: socket to send on |
4527 |
struct socket *sock, // IN: socket to send on |
4528 |
struct msghdr *msg, // IN: message to send |
4528 |
struct user_msghdr *msg, // IN: message to send |
4529 |
size_t len) // IN: length of message |
4529 |
size_t len) // IN: length of message |
4530 |
{ |
4530 |
{ |
4531 |
struct sock *sk; |
4531 |
struct sock *sk; |
Lines 4694-4700
Link Here
|
4694 |
static int |
4694 |
static int |
4695 |
VSockVmciDgramRecvmsg(struct kiocb *kiocb, // UNUSED |
4695 |
VSockVmciDgramRecvmsg(struct kiocb *kiocb, // UNUSED |
4696 |
struct socket *sock, // IN: socket to receive from |
4696 |
struct socket *sock, // IN: socket to receive from |
4697 |
struct msghdr *msg, // IN/OUT: message to receive into |
4697 |
struct user_msghdr *msg, // IN/OUT: message to receive into |
4698 |
size_t len, // IN: length of receive buffer |
4698 |
size_t len, // IN: length of receive buffer |
4699 |
int flags) // IN: receive flags |
4699 |
int flags) // IN: receive flags |
4700 |
{ |
4700 |
{ |
Lines 4704-4709
Link Here
|
4704 |
VMCIDatagram *dg; |
4704 |
VMCIDatagram *dg; |
4705 |
size_t payloadLen; |
4705 |
size_t payloadLen; |
4706 |
struct sk_buff *skb; |
4706 |
struct sk_buff *skb; |
|
|
4707 |
struct iov_iter to; |
4707 |
|
4708 |
|
4708 |
sk = sock->sk; |
4709 |
sk = sock->sk; |
4709 |
noblock = flags & MSG_DONTWAIT; |
4710 |
noblock = flags & MSG_DONTWAIT; |
Lines 4742-4748
Link Here
|
4742 |
} |
4743 |
} |
4743 |
|
4744 |
|
4744 |
/* Place the datagram payload in the user's iovec. */ |
4745 |
/* Place the datagram payload in the user's iovec. */ |
4745 |
err = skb_copy_datagram_iovec(skb, sizeof *dg, msg->msg_iov, payloadLen); |
4746 |
iov_iter_init(&to, READ, msg->msg_iov, 1, payloadLen); |
|
|
4747 |
err = skb_copy_datagram_iter(skb, sizeof *dg, &to, payloadLen); |
4746 |
if (err) { |
4748 |
if (err) { |
4747 |
goto out; |
4749 |
goto out; |
4748 |
} |
4750 |
} |
Lines 4785-4791
Link Here
|
4785 |
static int |
4787 |
static int |
4786 |
VSockVmciStreamRecvmsg(struct kiocb *kiocb, // UNUSED |
4788 |
VSockVmciStreamRecvmsg(struct kiocb *kiocb, // UNUSED |
4787 |
struct socket *sock, // IN: socket to receive from |
4789 |
struct socket *sock, // IN: socket to receive from |
4788 |
struct msghdr *msg, // IN/OUT: message to receive into |
4790 |
struct user_msghdr *msg, // IN/OUT: message to receive into |
4789 |
size_t len, // IN: length of receive buffer |
4791 |
size_t len, // IN: length of receive buffer |
4790 |
int flags) // IN: receive flags |
4792 |
int flags) // IN: receive flags |
4791 |
{ |
4793 |
{ |