diff options
Diffstat (limited to 'net/unix/af_unix.c')
| -rw-r--r-- | net/unix/af_unix.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 3a43a830476..0722a25a3a3 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c | |||
| @@ -524,6 +524,8 @@ static int unix_dgram_connect(struct socket *, struct sockaddr *, | |||
| 524 | int, int); | 524 | int, int); |
| 525 | static int unix_seqpacket_sendmsg(struct kiocb *, struct socket *, | 525 | static int unix_seqpacket_sendmsg(struct kiocb *, struct socket *, |
| 526 | struct msghdr *, size_t); | 526 | struct msghdr *, size_t); |
| 527 | static int unix_seqpacket_recvmsg(struct kiocb *, struct socket *, | ||
| 528 | struct msghdr *, size_t, int); | ||
| 527 | 529 | ||
| 528 | static const struct proto_ops unix_stream_ops = { | 530 | static const struct proto_ops unix_stream_ops = { |
| 529 | .family = PF_UNIX, | 531 | .family = PF_UNIX, |
| @@ -583,7 +585,7 @@ static const struct proto_ops unix_seqpacket_ops = { | |||
| 583 | .setsockopt = sock_no_setsockopt, | 585 | .setsockopt = sock_no_setsockopt, |
| 584 | .getsockopt = sock_no_getsockopt, | 586 | .getsockopt = sock_no_getsockopt, |
| 585 | .sendmsg = unix_seqpacket_sendmsg, | 587 | .sendmsg = unix_seqpacket_sendmsg, |
| 586 | .recvmsg = unix_dgram_recvmsg, | 588 | .recvmsg = unix_seqpacket_recvmsg, |
| 587 | .mmap = sock_no_mmap, | 589 | .mmap = sock_no_mmap, |
| 588 | .sendpage = sock_no_sendpage, | 590 | .sendpage = sock_no_sendpage, |
| 589 | }; | 591 | }; |
| @@ -1699,6 +1701,18 @@ static int unix_seqpacket_sendmsg(struct kiocb *kiocb, struct socket *sock, | |||
| 1699 | return unix_dgram_sendmsg(kiocb, sock, msg, len); | 1701 | return unix_dgram_sendmsg(kiocb, sock, msg, len); |
| 1700 | } | 1702 | } |
| 1701 | 1703 | ||
| 1704 | static int unix_seqpacket_recvmsg(struct kiocb *iocb, struct socket *sock, | ||
| 1705 | struct msghdr *msg, size_t size, | ||
| 1706 | int flags) | ||
| 1707 | { | ||
| 1708 | struct sock *sk = sock->sk; | ||
| 1709 | |||
| 1710 | if (sk->sk_state != TCP_ESTABLISHED) | ||
| 1711 | return -ENOTCONN; | ||
| 1712 | |||
| 1713 | return unix_dgram_recvmsg(iocb, sock, msg, size, flags); | ||
| 1714 | } | ||
| 1715 | |||
| 1702 | static void unix_copy_addr(struct msghdr *msg, struct sock *sk) | 1716 | static void unix_copy_addr(struct msghdr *msg, struct sock *sk) |
| 1703 | { | 1717 | { |
| 1704 | struct unix_sock *u = unix_sk(sk); | 1718 | struct unix_sock *u = unix_sk(sk); |
| @@ -2240,7 +2254,7 @@ static int unix_seq_show(struct seq_file *seq, void *v) | |||
| 2240 | struct unix_sock *u = unix_sk(s); | 2254 | struct unix_sock *u = unix_sk(s); |
| 2241 | unix_state_lock(s); | 2255 | unix_state_lock(s); |
| 2242 | 2256 | ||
| 2243 | seq_printf(seq, "%p: %08X %08X %08X %04X %02X %5lu", | 2257 | seq_printf(seq, "%pK: %08X %08X %08X %04X %02X %5lu", |
| 2244 | s, | 2258 | s, |
| 2245 | atomic_read(&s->sk_refcnt), | 2259 | atomic_read(&s->sk_refcnt), |
| 2246 | 0, | 2260 | 0, |
