History

af_unix: fix bug on large send()

commit e370a723632 ("af_unix: improve STREAM behavior with fragmented memory") added a bug on large send() because the skb_copy_datagram_from_iovec() call always start from the beginning of iovec. We must instead use the @sent variable to properly skip the already processed part.

Eric Dumazet committed 13 years ago

Commit f3dfd201 parent 6c821bd1 file · +2 −1Browse files

Unified · Split

net/unix/af_unix.c+2−1
@@ -1669,7 +1669,8 @@ static int unix_stream_sendmsg(struct kiocb *kiocb, struct socket *sock, · 1668 unmodified lines
1669 skb_put(skb, size - data_len);1669 skb_put(skb, size - data_len);
1670 skb->data_len = data_len;1670 skb->data_len = data_len;
1671 skb->len = size;1671 skb->len = size;
1672 err = skb_copy_datagram_from_iovec(skb, 0, msg->msg_iov, 0, size);1672 err = skb_copy_datagram_from_iovec(skb, 0, msg->msg_iov,
1673 sent, size);
1673 if (err) {1674 if (err) {
1674 kfree_skb(skb);1675 kfree_skb(skb);
1675 goto out_err;1676 goto out_err;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t