Commit 227158db authored by Al Viro's avatar Al Viro

new helper: skb_copy_and_csum_datagram_msg()

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent c33d23c2
...@@ -2651,6 +2651,11 @@ static inline int skb_copy_datagram_msg(const struct sk_buff *from, int offset, ...@@ -2651,6 +2651,11 @@ static inline int skb_copy_datagram_msg(const struct sk_buff *from, int offset,
} }
int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb, int hlen, int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb, int hlen,
struct iovec *iov); struct iovec *iov);
static inline int skb_copy_and_csum_datagram_msg(struct sk_buff *skb, int hlen,
struct msghdr *msg)
{
return skb_copy_and_csum_datagram_iovec(skb, hlen, msg->msg_iov);
}
int skb_copy_datagram_from_iovec(struct sk_buff *skb, int offset, int skb_copy_datagram_from_iovec(struct sk_buff *skb, int offset,
const struct iovec *from, int from_offset, const struct iovec *from, int from_offset,
int len); int len);
......
...@@ -1284,9 +1284,8 @@ int udp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, ...@@ -1284,9 +1284,8 @@ int udp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
err = skb_copy_datagram_msg(skb, sizeof(struct udphdr), err = skb_copy_datagram_msg(skb, sizeof(struct udphdr),
msg, copied); msg, copied);
else { else {
err = skb_copy_and_csum_datagram_iovec(skb, err = skb_copy_and_csum_datagram_msg(skb, sizeof(struct udphdr),
sizeof(struct udphdr), msg);
msg->msg_iov);
if (err == -EINVAL) if (err == -EINVAL)
goto csum_copy_err; goto csum_copy_err;
......
...@@ -492,7 +492,7 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk, ...@@ -492,7 +492,7 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
goto csum_copy_err; goto csum_copy_err;
err = skb_copy_datagram_msg(skb, 0, msg, copied); err = skb_copy_datagram_msg(skb, 0, msg, copied);
} else { } else {
err = skb_copy_and_csum_datagram_iovec(skb, 0, msg->msg_iov); err = skb_copy_and_csum_datagram_msg(skb, 0, msg);
if (err == -EINVAL) if (err == -EINVAL)
goto csum_copy_err; goto csum_copy_err;
} }
......
...@@ -428,7 +428,7 @@ int udpv6_recvmsg(struct kiocb *iocb, struct sock *sk, ...@@ -428,7 +428,7 @@ int udpv6_recvmsg(struct kiocb *iocb, struct sock *sk,
err = skb_copy_datagram_msg(skb, sizeof(struct udphdr), err = skb_copy_datagram_msg(skb, sizeof(struct udphdr),
msg, copied); msg, copied);
else { else {
err = skb_copy_and_csum_datagram_iovec(skb, sizeof(struct udphdr), msg->msg_iov); err = skb_copy_and_csum_datagram_msg(skb, sizeof(struct udphdr), msg);
if (err == -EINVAL) if (err == -EINVAL)
goto csum_copy_err; goto csum_copy_err;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment