diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-23 14:47:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-23 14:47:02 -0400 |
commit | 5f05647dd81c11a6a165ccc8f0c1370b16f3bcb0 (patch) | |
tree | 7851ef1c93aa1aba7ef327ca4b75fd35e6d10f29 /net/unix/af_unix.c | |
parent | 02f36038c568111ad4fc433f6fa760ff5e38fab4 (diff) | |
parent | ec37a48d1d16c30b655ac5280209edf52a6775d4 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1699 commits)
bnx2/bnx2x: Unsupported Ethtool operations should return -EINVAL.
vlan: Calling vlan_hwaccel_do_receive() is always valid.
tproxy: use the interface primary IP address as a default value for --on-ip
tproxy: added IPv6 support to the socket match
cxgb3: function namespace cleanup
tproxy: added IPv6 support to the TPROXY target
tproxy: added IPv6 socket lookup function to nf_tproxy_core
be2net: Changes to use only priority codes allowed by f/w
tproxy: allow non-local binds of IPv6 sockets if IP_TRANSPARENT is enabled
tproxy: added tproxy sockopt interface in the IPV6 layer
tproxy: added udp6_lib_lookup function
tproxy: added const specifiers to udp lookup functions
tproxy: split off ipv6 defragmentation to a separate module
l2tp: small cleanup
nf_nat: restrict ICMP translation for embedded header
can: mcp251x: fix generation of error frames
can: mcp251x: fix endless loop in interrupt handler if CANINTF_MERRF is set
can-raw: add msg_flags to distinguish local traffic
9p: client code cleanup
rds: make local functions/variables static
...
Fix up conflicts in net/core/dev.c, drivers/net/pcmcia/smc91c92_cs.c and
drivers/net/wireless/ath/ath9k/debug.c as per David
Diffstat (limited to 'net/unix/af_unix.c')
-rw-r--r-- | net/unix/af_unix.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 0b39b2451ea5..0ebc777a6660 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c | |||
@@ -1511,6 +1511,8 @@ restart: | |||
1511 | goto restart; | 1511 | goto restart; |
1512 | } | 1512 | } |
1513 | 1513 | ||
1514 | if (sock_flag(other, SOCK_RCVTSTAMP)) | ||
1515 | __net_timestamp(skb); | ||
1514 | skb_queue_tail(&other->sk_receive_queue, skb); | 1516 | skb_queue_tail(&other->sk_receive_queue, skb); |
1515 | unix_state_unlock(other); | 1517 | unix_state_unlock(other); |
1516 | other->sk_data_ready(other, len); | 1518 | other->sk_data_ready(other, len); |
@@ -1722,6 +1724,9 @@ static int unix_dgram_recvmsg(struct kiocb *iocb, struct socket *sock, | |||
1722 | if (err) | 1724 | if (err) |
1723 | goto out_free; | 1725 | goto out_free; |
1724 | 1726 | ||
1727 | if (sock_flag(sk, SOCK_RCVTSTAMP)) | ||
1728 | __sock_recv_timestamp(msg, sk, skb); | ||
1729 | |||
1725 | if (!siocb->scm) { | 1730 | if (!siocb->scm) { |
1726 | siocb->scm = &tmp_scm; | 1731 | siocb->scm = &tmp_scm; |
1727 | memset(&tmp_scm, 0, sizeof(tmp_scm)); | 1732 | memset(&tmp_scm, 0, sizeof(tmp_scm)); |
@@ -2033,11 +2038,10 @@ static unsigned int unix_poll(struct file *file, struct socket *sock, poll_table | |||
2033 | if (sk->sk_shutdown == SHUTDOWN_MASK) | 2038 | if (sk->sk_shutdown == SHUTDOWN_MASK) |
2034 | mask |= POLLHUP; | 2039 | mask |= POLLHUP; |
2035 | if (sk->sk_shutdown & RCV_SHUTDOWN) | 2040 | if (sk->sk_shutdown & RCV_SHUTDOWN) |
2036 | mask |= POLLRDHUP; | 2041 | mask |= POLLRDHUP | POLLIN | POLLRDNORM; |
2037 | 2042 | ||
2038 | /* readable? */ | 2043 | /* readable? */ |
2039 | if (!skb_queue_empty(&sk->sk_receive_queue) || | 2044 | if (!skb_queue_empty(&sk->sk_receive_queue)) |
2040 | (sk->sk_shutdown & RCV_SHUTDOWN)) | ||
2041 | mask |= POLLIN | POLLRDNORM; | 2045 | mask |= POLLIN | POLLRDNORM; |
2042 | 2046 | ||
2043 | /* Connection-based need to check for termination and startup */ | 2047 | /* Connection-based need to check for termination and startup */ |