diff options
Diffstat (limited to 'net/atm/common.c')
-rw-r--r-- | net/atm/common.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/net/atm/common.c b/net/atm/common.c index f59112944c91..b84057e41bd6 100644 --- a/net/atm/common.c +++ b/net/atm/common.c | |||
@@ -577,9 +577,6 @@ int vcc_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *m, | |||
577 | struct atm_vcc *vcc; | 577 | struct atm_vcc *vcc; |
578 | struct sk_buff *skb; | 578 | struct sk_buff *skb; |
579 | int eff, error; | 579 | int eff, error; |
580 | struct iov_iter from; | ||
581 | |||
582 | iov_iter_init(&from, WRITE, m->msg_iov, m->msg_iovlen, size); | ||
583 | 580 | ||
584 | lock_sock(sk); | 581 | lock_sock(sk); |
585 | if (sock->state != SS_CONNECTED) { | 582 | if (sock->state != SS_CONNECTED) { |
@@ -634,7 +631,7 @@ int vcc_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *m, | |||
634 | goto out; | 631 | goto out; |
635 | skb->dev = NULL; /* for paths shared with net_device interfaces */ | 632 | skb->dev = NULL; /* for paths shared with net_device interfaces */ |
636 | ATM_SKB(skb)->atm_options = vcc->atm_options; | 633 | ATM_SKB(skb)->atm_options = vcc->atm_options; |
637 | if (copy_from_iter(skb_put(skb, size), size, &from) != size) { | 634 | if (copy_from_iter(skb_put(skb, size), size, &m->msg_iter) != size) { |
638 | kfree_skb(skb); | 635 | kfree_skb(skb); |
639 | error = -EFAULT; | 636 | error = -EFAULT; |
640 | goto out; | 637 | goto out; |