diff options
Diffstat (limited to 'net/ipv4/raw.c')
-rw-r--r-- | net/ipv4/raw.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c index 0bb68df5055d..f027a708b7e0 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c | |||
@@ -337,7 +337,7 @@ int raw_rcv(struct sock *sk, struct sk_buff *skb) | |||
337 | } | 337 | } |
338 | 338 | ||
339 | static int raw_send_hdrinc(struct sock *sk, struct flowi4 *fl4, | 339 | static int raw_send_hdrinc(struct sock *sk, struct flowi4 *fl4, |
340 | void *from, size_t length, | 340 | struct msghdr *msg, size_t length, |
341 | struct rtable **rtp, | 341 | struct rtable **rtp, |
342 | unsigned int flags) | 342 | unsigned int flags) |
343 | { | 343 | { |
@@ -382,7 +382,7 @@ static int raw_send_hdrinc(struct sock *sk, struct flowi4 *fl4, | |||
382 | 382 | ||
383 | skb->transport_header = skb->network_header; | 383 | skb->transport_header = skb->network_header; |
384 | err = -EFAULT; | 384 | err = -EFAULT; |
385 | if (memcpy_fromiovecend((void *)iph, from, 0, length)) | 385 | if (memcpy_from_msg(iph, msg, length)) |
386 | goto error_free; | 386 | goto error_free; |
387 | 387 | ||
388 | iphlen = iph->ihl * 4; | 388 | iphlen = iph->ihl * 4; |
@@ -625,8 +625,7 @@ static int raw_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, | |||
625 | back_from_confirm: | 625 | back_from_confirm: |
626 | 626 | ||
627 | if (inet->hdrincl) | 627 | if (inet->hdrincl) |
628 | /* XXX: stripping const */ | 628 | err = raw_send_hdrinc(sk, &fl4, msg, len, |
629 | err = raw_send_hdrinc(sk, &fl4, (struct iovec *)msg->msg_iter.iov, len, | ||
630 | &rt, msg->msg_flags); | 629 | &rt, msg->msg_flags); |
631 | 630 | ||
632 | else { | 631 | else { |