aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/socket.c')
-rw-r--r--net/tipc/socket.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index cee6674a3bf4..3bb45042e833 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -692,10 +692,9 @@ static int tipc_getname(struct socket *sock, struct sockaddr *uaddr,
692} 692}
693 693
694/** 694/**
695 * tipc_poll - read and possibly block on pollmask 695 * tipc_poll - read pollmask
696 * @file: file structure associated with the socket 696 * @file: file structure associated with the socket
697 * @sock: socket for which to calculate the poll bits 697 * @sock: socket for which to calculate the poll bits
698 * @wait: ???
699 * 698 *
700 * Returns pollmask value 699 * Returns pollmask value
701 * 700 *
@@ -709,15 +708,12 @@ static int tipc_getname(struct socket *sock, struct sockaddr *uaddr,
709 * imply that the operation will succeed, merely that it should be performed 708 * imply that the operation will succeed, merely that it should be performed
710 * and will not block. 709 * and will not block.
711 */ 710 */
712static __poll_t tipc_poll(struct file *file, struct socket *sock, 711static __poll_t tipc_poll_mask(struct socket *sock, __poll_t events)
713 poll_table *wait)
714{ 712{
715 struct sock *sk = sock->sk; 713 struct sock *sk = sock->sk;
716 struct tipc_sock *tsk = tipc_sk(sk); 714 struct tipc_sock *tsk = tipc_sk(sk);
717 __poll_t revents = 0; 715 __poll_t revents = 0;
718 716
719 sock_poll_wait(file, sk_sleep(sk), wait);
720
721 if (sk->sk_shutdown & RCV_SHUTDOWN) 717 if (sk->sk_shutdown & RCV_SHUTDOWN)
722 revents |= EPOLLRDHUP | EPOLLIN | EPOLLRDNORM; 718 revents |= EPOLLRDHUP | EPOLLIN | EPOLLRDNORM;
723 if (sk->sk_shutdown == SHUTDOWN_MASK) 719 if (sk->sk_shutdown == SHUTDOWN_MASK)
@@ -1278,7 +1274,7 @@ static int __tipc_sendmsg(struct socket *sock, struct msghdr *m, size_t dlen)
1278 struct tipc_msg *hdr = &tsk->phdr; 1274 struct tipc_msg *hdr = &tsk->phdr;
1279 struct tipc_name_seq *seq; 1275 struct tipc_name_seq *seq;
1280 struct sk_buff_head pkts; 1276 struct sk_buff_head pkts;
1281 u32 dnode, dport; 1277 u32 dport, dnode = 0;
1282 u32 type, inst; 1278 u32 type, inst;
1283 int mtu, rc; 1279 int mtu, rc;
1284 1280
@@ -1348,6 +1344,8 @@ static int __tipc_sendmsg(struct socket *sock, struct msghdr *m, size_t dlen)
1348 msg_set_destnode(hdr, dnode); 1344 msg_set_destnode(hdr, dnode);
1349 msg_set_destport(hdr, dest->addr.id.ref); 1345 msg_set_destport(hdr, dest->addr.id.ref);
1350 msg_set_hdr_sz(hdr, BASIC_H_SIZE); 1346 msg_set_hdr_sz(hdr, BASIC_H_SIZE);
1347 } else {
1348 return -EINVAL;
1351 } 1349 }
1352 1350
1353 /* Block or return if destination link is congested */ 1351 /* Block or return if destination link is congested */
@@ -1514,10 +1512,10 @@ static void tipc_sk_set_orig_addr(struct msghdr *m, struct sk_buff *skb)
1514 1512
1515 srcaddr->sock.family = AF_TIPC; 1513 srcaddr->sock.family = AF_TIPC;
1516 srcaddr->sock.addrtype = TIPC_ADDR_ID; 1514 srcaddr->sock.addrtype = TIPC_ADDR_ID;
1515 srcaddr->sock.scope = 0;
1517 srcaddr->sock.addr.id.ref = msg_origport(hdr); 1516 srcaddr->sock.addr.id.ref = msg_origport(hdr);
1518 srcaddr->sock.addr.id.node = msg_orignode(hdr); 1517 srcaddr->sock.addr.id.node = msg_orignode(hdr);
1519 srcaddr->sock.addr.name.domain = 0; 1518 srcaddr->sock.addr.name.domain = 0;
1520 srcaddr->sock.scope = 0;
1521 m->msg_namelen = sizeof(struct sockaddr_tipc); 1519 m->msg_namelen = sizeof(struct sockaddr_tipc);
1522 1520
1523 if (!msg_in_group(hdr)) 1521 if (!msg_in_group(hdr))
@@ -1526,6 +1524,7 @@ static void tipc_sk_set_orig_addr(struct msghdr *m, struct sk_buff *skb)
1526 /* Group message users may also want to know sending member's id */ 1524 /* Group message users may also want to know sending member's id */
1527 srcaddr->member.family = AF_TIPC; 1525 srcaddr->member.family = AF_TIPC;
1528 srcaddr->member.addrtype = TIPC_ADDR_NAME; 1526 srcaddr->member.addrtype = TIPC_ADDR_NAME;
1527 srcaddr->member.scope = 0;
1529 srcaddr->member.addr.name.name.type = msg_nametype(hdr); 1528 srcaddr->member.addr.name.name.type = msg_nametype(hdr);
1530 srcaddr->member.addr.name.name.instance = TIPC_SKB_CB(skb)->orig_member; 1529 srcaddr->member.addr.name.name.instance = TIPC_SKB_CB(skb)->orig_member;
1531 srcaddr->member.addr.name.domain = 0; 1530 srcaddr->member.addr.name.domain = 0;
@@ -3025,7 +3024,7 @@ static const struct proto_ops msg_ops = {
3025 .socketpair = tipc_socketpair, 3024 .socketpair = tipc_socketpair,
3026 .accept = sock_no_accept, 3025 .accept = sock_no_accept,
3027 .getname = tipc_getname, 3026 .getname = tipc_getname,
3028 .poll = tipc_poll, 3027 .poll_mask = tipc_poll_mask,
3029 .ioctl = tipc_ioctl, 3028 .ioctl = tipc_ioctl,
3030 .listen = sock_no_listen, 3029 .listen = sock_no_listen,
3031 .shutdown = tipc_shutdown, 3030 .shutdown = tipc_shutdown,
@@ -3046,7 +3045,7 @@ static const struct proto_ops packet_ops = {
3046 .socketpair = tipc_socketpair, 3045 .socketpair = tipc_socketpair,
3047 .accept = tipc_accept, 3046 .accept = tipc_accept,
3048 .getname = tipc_getname, 3047 .getname = tipc_getname,
3049 .poll = tipc_poll, 3048 .poll_mask = tipc_poll_mask,
3050 .ioctl = tipc_ioctl, 3049 .ioctl = tipc_ioctl,
3051 .listen = tipc_listen, 3050 .listen = tipc_listen,
3052 .shutdown = tipc_shutdown, 3051 .shutdown = tipc_shutdown,
@@ -3067,7 +3066,7 @@ static const struct proto_ops stream_ops = {
3067 .socketpair = tipc_socketpair, 3066 .socketpair = tipc_socketpair,
3068 .accept = tipc_accept, 3067 .accept = tipc_accept,
3069 .getname = tipc_getname, 3068 .getname = tipc_getname,
3070 .poll = tipc_poll, 3069 .poll_mask = tipc_poll_mask,
3071 .ioctl = tipc_ioctl, 3070 .ioctl = tipc_ioctl,
3072 .listen = tipc_listen, 3071 .listen = tipc_listen,
3073 .shutdown = tipc_shutdown, 3072 .shutdown = tipc_shutdown,
@@ -3257,8 +3256,8 @@ out:
3257} 3256}
3258EXPORT_SYMBOL(tipc_nl_sk_walk); 3257EXPORT_SYMBOL(tipc_nl_sk_walk);
3259 3258
3260int tipc_sk_fill_sock_diag(struct sk_buff *skb, struct tipc_sock *tsk, 3259int tipc_sk_fill_sock_diag(struct sk_buff *skb, struct netlink_callback *cb,
3261 u32 sk_filter_state, 3260 struct tipc_sock *tsk, u32 sk_filter_state,
3262 u64 (*tipc_diag_gen_cookie)(struct sock *sk)) 3261 u64 (*tipc_diag_gen_cookie)(struct sock *sk))
3263{ 3262{
3264 struct sock *sk = &tsk->sk; 3263 struct sock *sk = &tsk->sk;
@@ -3280,7 +3279,7 @@ int tipc_sk_fill_sock_diag(struct sk_buff *skb, struct tipc_sock *tsk,
3280 nla_put_u32(skb, TIPC_NLA_SOCK_TIPC_STATE, (u32)sk->sk_state) || 3279 nla_put_u32(skb, TIPC_NLA_SOCK_TIPC_STATE, (u32)sk->sk_state) ||
3281 nla_put_u32(skb, TIPC_NLA_SOCK_INO, sock_i_ino(sk)) || 3280 nla_put_u32(skb, TIPC_NLA_SOCK_INO, sock_i_ino(sk)) ||
3282 nla_put_u32(skb, TIPC_NLA_SOCK_UID, 3281 nla_put_u32(skb, TIPC_NLA_SOCK_UID,
3283 from_kuid_munged(sk_user_ns(NETLINK_CB(skb).sk), 3282 from_kuid_munged(sk_user_ns(NETLINK_CB(cb->skb).sk),
3284 sock_i_uid(sk))) || 3283 sock_i_uid(sk))) ||
3285 nla_put_u64_64bit(skb, TIPC_NLA_SOCK_COOKIE, 3284 nla_put_u64_64bit(skb, TIPC_NLA_SOCK_COOKIE,
3286 tipc_diag_gen_cookie(sk), 3285 tipc_diag_gen_cookie(sk),