aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorBenson Leung <bleung@chromium.org>2018-07-09 19:36:00 -0400
committerBenson Leung <bleung@chromium.org>2018-07-09 19:36:00 -0400
commit40291fb75123816b35ba06696e56b9cf2d96bf90 (patch)
treedfff532af8df1c06ca83466c8347873426a81579 /net
parentc474e9f2be9992861d926eea3e5d4fb393cd6e2a (diff)
parent413c94469a9db26ac4e1d16bf8de0248de93e2d8 (diff)
Merge tag 'ib-platform-chrome-mfd-move-cros-ec-transport-for-4.19' into working-branch-for-4.19
Immutable branch (mfd, chrome) due for the v4.19 window Immutable Branch which moves the cros_ec_i2c and cros_ec_spi transport drivers from mfd to platform/chrome. Changes in arm are a simple rename in defconfigs. Change in input is a rename in help text.
Diffstat (limited to 'net')
-rw-r--r--net/appletalk/ddp.c2
-rw-r--r--net/atm/br2684.c3
-rw-r--r--net/atm/clip.c3
-rw-r--r--net/atm/common.c14
-rw-r--r--net/atm/common.h2
-rw-r--r--net/atm/lec.c3
-rw-r--r--net/atm/mpc.c3
-rw-r--r--net/atm/pppoatm.c3
-rw-r--r--net/atm/pvc.c2
-rw-r--r--net/atm/raw.c4
-rw-r--r--net/atm/svc.c2
-rw-r--r--net/ax25/af_ax25.c2
-rw-r--r--net/bluetooth/af_bluetooth.c7
-rw-r--r--net/bluetooth/hci_sock.c2
-rw-r--r--net/bluetooth/l2cap_sock.c2
-rw-r--r--net/bluetooth/rfcomm/sock.c2
-rw-r--r--net/bluetooth/sco.c2
-rw-r--r--net/bpfilter/.gitignore1
-rw-r--r--net/bpfilter/Makefile6
-rw-r--r--net/caif/caif_socket.c12
-rw-r--r--net/can/bcm.c2
-rw-r--r--net/can/raw.c2
-rw-r--r--net/core/datagram.c13
-rw-r--r--net/core/dev.c4
-rw-r--r--net/core/filter.c21
-rw-r--r--net/dccp/ccids/ccid3.c16
-rw-r--r--net/dccp/dccp.h3
-rw-r--r--net/dccp/ipv4.c2
-rw-r--r--net/dccp/ipv6.c2
-rw-r--r--net/dccp/proto.c13
-rw-r--r--net/decnet/af_decnet.c6
-rw-r--r--net/ieee802154/socket.c4
-rw-r--r--net/ipv4/af_inet.c8
-rw-r--r--net/ipv4/inet_hashtables.c4
-rw-r--r--net/ipv4/ip_output.c3
-rw-r--r--net/ipv4/tcp.c23
-rw-r--r--net/ipv4/udp.c10
-rw-r--r--net/ipv6/af_inet6.c4
-rw-r--r--net/ipv6/inet6_hashtables.c4
-rw-r--r--net/ipv6/ip6_fib.c5
-rw-r--r--net/ipv6/ip6_output.c3
-rw-r--r--net/ipv6/mcast.c9
-rw-r--r--net/ipv6/raw.c4
-rw-r--r--net/iucv/af_iucv.c7
-rw-r--r--net/kcm/kcmsock.c10
-rw-r--r--net/key/af_key.c2
-rw-r--r--net/l2tp/l2tp_ip.c2
-rw-r--r--net/l2tp/l2tp_ip6.c2
-rw-r--r--net/l2tp/l2tp_ppp.c2
-rw-r--r--net/llc/af_llc.c2
-rw-r--r--net/ncsi/ncsi-aen.c10
-rw-r--r--net/ncsi/ncsi-manage.c49
-rw-r--r--net/netlink/af_netlink.c2
-rw-r--r--net/netrom/af_netrom.c2
-rw-r--r--net/nfc/llcp_sock.c9
-rw-r--r--net/nfc/rawsock.c4
-rw-r--r--net/packet/af_packet.c25
-rw-r--r--net/phonet/socket.c9
-rw-r--r--net/qrtr/qrtr.c2
-rw-r--r--net/rose/af_rose.c2
-rw-r--r--net/rxrpc/af_rxrpc.c10
-rw-r--r--net/sched/act_ife.c12
-rw-r--r--net/sched/cls_flower.c21
-rw-r--r--net/sched/sch_blackhole.c2
-rw-r--r--net/sched/sch_hfsc.c4
-rw-r--r--net/sctp/chunk.c4
-rw-r--r--net/sctp/ipv6.c2
-rw-r--r--net/sctp/protocol.c2
-rw-r--r--net/sctp/socket.c4
-rw-r--r--net/smc/af_smc.c12
-rw-r--r--net/socket.c50
-rw-r--r--net/strparser/strparser.c5
-rw-r--r--net/sunrpc/xprt.c10
-rw-r--r--net/tipc/socket.c14
-rw-r--r--net/tls/tls_main.c2
-rw-r--r--net/tls/tls_sw.c19
-rw-r--r--net/unix/af_unix.c30
-rw-r--r--net/vmw_vsock/af_vsock.c19
-rw-r--r--net/vmw_vsock/virtio_transport.c2
-rw-r--r--net/x25/af_x25.c2
-rw-r--r--net/xdp/xsk.c10
81 files changed, 333 insertions, 286 deletions
diff --git a/net/appletalk/ddp.c b/net/appletalk/ddp.c
index 55fdba05d7d9..9b6bc5abe946 100644
--- a/net/appletalk/ddp.c
+++ b/net/appletalk/ddp.c
@@ -1869,7 +1869,7 @@ static const struct proto_ops atalk_dgram_ops = {
1869 .socketpair = sock_no_socketpair, 1869 .socketpair = sock_no_socketpair,
1870 .accept = sock_no_accept, 1870 .accept = sock_no_accept,
1871 .getname = atalk_getname, 1871 .getname = atalk_getname,
1872 .poll_mask = datagram_poll_mask, 1872 .poll = datagram_poll,
1873 .ioctl = atalk_ioctl, 1873 .ioctl = atalk_ioctl,
1874#ifdef CONFIG_COMPAT 1874#ifdef CONFIG_COMPAT
1875 .compat_ioctl = atalk_compat_ioctl, 1875 .compat_ioctl = atalk_compat_ioctl,
diff --git a/net/atm/br2684.c b/net/atm/br2684.c
index 36b3adacc0dd..10462de734ea 100644
--- a/net/atm/br2684.c
+++ b/net/atm/br2684.c
@@ -252,8 +252,7 @@ static int br2684_xmit_vcc(struct sk_buff *skb, struct net_device *dev,
252 252
253 ATM_SKB(skb)->vcc = atmvcc = brvcc->atmvcc; 253 ATM_SKB(skb)->vcc = atmvcc = brvcc->atmvcc;
254 pr_debug("atm_skb(%p)->vcc(%p)->dev(%p)\n", skb, atmvcc, atmvcc->dev); 254 pr_debug("atm_skb(%p)->vcc(%p)->dev(%p)\n", skb, atmvcc, atmvcc->dev);
255 refcount_add(skb->truesize, &sk_atm(atmvcc)->sk_wmem_alloc); 255 atm_account_tx(atmvcc, skb);
256 ATM_SKB(skb)->atm_options = atmvcc->atm_options;
257 dev->stats.tx_packets++; 256 dev->stats.tx_packets++;
258 dev->stats.tx_bytes += skb->len; 257 dev->stats.tx_bytes += skb->len;
259 258
diff --git a/net/atm/clip.c b/net/atm/clip.c
index 66caa48a27c2..d795b9c5aea4 100644
--- a/net/atm/clip.c
+++ b/net/atm/clip.c
@@ -381,8 +381,7 @@ static netdev_tx_t clip_start_xmit(struct sk_buff *skb,
381 memcpy(here, llc_oui, sizeof(llc_oui)); 381 memcpy(here, llc_oui, sizeof(llc_oui));
382 ((__be16 *) here)[3] = skb->protocol; 382 ((__be16 *) here)[3] = skb->protocol;
383 } 383 }
384 refcount_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc); 384 atm_account_tx(vcc, skb);
385 ATM_SKB(skb)->atm_options = vcc->atm_options;
386 entry->vccs->last_use = jiffies; 385 entry->vccs->last_use = jiffies;
387 pr_debug("atm_skb(%p)->vcc(%p)->dev(%p)\n", skb, vcc, vcc->dev); 386 pr_debug("atm_skb(%p)->vcc(%p)->dev(%p)\n", skb, vcc, vcc->dev);
388 old = xchg(&entry->vccs->xoff, 1); /* assume XOFF ... */ 387 old = xchg(&entry->vccs->xoff, 1); /* assume XOFF ... */
diff --git a/net/atm/common.c b/net/atm/common.c
index 1f2af59935db..a7a68e509628 100644
--- a/net/atm/common.c
+++ b/net/atm/common.c
@@ -630,10 +630,9 @@ int vcc_sendmsg(struct socket *sock, struct msghdr *m, size_t size)
630 goto out; 630 goto out;
631 } 631 }
632 pr_debug("%d += %d\n", sk_wmem_alloc_get(sk), skb->truesize); 632 pr_debug("%d += %d\n", sk_wmem_alloc_get(sk), skb->truesize);
633 refcount_add(skb->truesize, &sk->sk_wmem_alloc); 633 atm_account_tx(vcc, skb);
634 634
635 skb->dev = NULL; /* for paths shared with net_device interfaces */ 635 skb->dev = NULL; /* for paths shared with net_device interfaces */
636 ATM_SKB(skb)->atm_options = vcc->atm_options;
637 if (!copy_from_iter_full(skb_put(skb, size), size, &m->msg_iter)) { 636 if (!copy_from_iter_full(skb_put(skb, size), size, &m->msg_iter)) {
638 kfree_skb(skb); 637 kfree_skb(skb);
639 error = -EFAULT; 638 error = -EFAULT;
@@ -648,11 +647,16 @@ out:
648 return error; 647 return error;
649} 648}
650 649
651__poll_t vcc_poll_mask(struct socket *sock, __poll_t events) 650__poll_t vcc_poll(struct file *file, struct socket *sock, poll_table *wait)
652{ 651{
653 struct sock *sk = sock->sk; 652 struct sock *sk = sock->sk;
654 struct atm_vcc *vcc = ATM_SD(sock); 653 struct atm_vcc *vcc;
655 __poll_t mask = 0; 654 __poll_t mask;
655
656 sock_poll_wait(file, sk_sleep(sk), wait);
657 mask = 0;
658
659 vcc = ATM_SD(sock);
656 660
657 /* exceptional events */ 661 /* exceptional events */
658 if (sk->sk_err) 662 if (sk->sk_err)
diff --git a/net/atm/common.h b/net/atm/common.h
index 526796ad230f..5850649068bb 100644
--- a/net/atm/common.h
+++ b/net/atm/common.h
@@ -17,7 +17,7 @@ int vcc_connect(struct socket *sock, int itf, short vpi, int vci);
17int vcc_recvmsg(struct socket *sock, struct msghdr *msg, size_t size, 17int vcc_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
18 int flags); 18 int flags);
19int vcc_sendmsg(struct socket *sock, struct msghdr *m, size_t total_len); 19int vcc_sendmsg(struct socket *sock, struct msghdr *m, size_t total_len);
20__poll_t vcc_poll_mask(struct socket *sock, __poll_t events); 20__poll_t vcc_poll(struct file *file, struct socket *sock, poll_table *wait);
21int vcc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg); 21int vcc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
22int vcc_compat_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg); 22int vcc_compat_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
23int vcc_setsockopt(struct socket *sock, int level, int optname, 23int vcc_setsockopt(struct socket *sock, int level, int optname,
diff --git a/net/atm/lec.c b/net/atm/lec.c
index 5a95fcf6f9b6..d7f5cf5b7594 100644
--- a/net/atm/lec.c
+++ b/net/atm/lec.c
@@ -182,9 +182,8 @@ lec_send(struct atm_vcc *vcc, struct sk_buff *skb)
182 struct net_device *dev = skb->dev; 182 struct net_device *dev = skb->dev;
183 183
184 ATM_SKB(skb)->vcc = vcc; 184 ATM_SKB(skb)->vcc = vcc;
185 ATM_SKB(skb)->atm_options = vcc->atm_options; 185 atm_account_tx(vcc, skb);
186 186
187 refcount_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
188 if (vcc->send(vcc, skb) < 0) { 187 if (vcc->send(vcc, skb) < 0) {
189 dev->stats.tx_dropped++; 188 dev->stats.tx_dropped++;
190 return; 189 return;
diff --git a/net/atm/mpc.c b/net/atm/mpc.c
index 75620c2f2617..24b53c4c39c6 100644
--- a/net/atm/mpc.c
+++ b/net/atm/mpc.c
@@ -555,8 +555,7 @@ static int send_via_shortcut(struct sk_buff *skb, struct mpoa_client *mpc)
555 sizeof(struct llc_snap_hdr)); 555 sizeof(struct llc_snap_hdr));
556 } 556 }
557 557
558 refcount_add(skb->truesize, &sk_atm(entry->shortcut)->sk_wmem_alloc); 558 atm_account_tx(entry->shortcut, skb);
559 ATM_SKB(skb)->atm_options = entry->shortcut->atm_options;
560 entry->shortcut->send(entry->shortcut, skb); 559 entry->shortcut->send(entry->shortcut, skb);
561 entry->packets_fwded++; 560 entry->packets_fwded++;
562 mpc->in_ops->put(entry); 561 mpc->in_ops->put(entry);
diff --git a/net/atm/pppoatm.c b/net/atm/pppoatm.c
index 21d9d341a619..af8c4b38b746 100644
--- a/net/atm/pppoatm.c
+++ b/net/atm/pppoatm.c
@@ -350,8 +350,7 @@ static int pppoatm_send(struct ppp_channel *chan, struct sk_buff *skb)
350 return 1; 350 return 1;
351 } 351 }
352 352
353 refcount_add(skb->truesize, &sk_atm(ATM_SKB(skb)->vcc)->sk_wmem_alloc); 353 atm_account_tx(vcc, skb);
354 ATM_SKB(skb)->atm_options = ATM_SKB(skb)->vcc->atm_options;
355 pr_debug("atm_skb(%p)->vcc(%p)->dev(%p)\n", 354 pr_debug("atm_skb(%p)->vcc(%p)->dev(%p)\n",
356 skb, ATM_SKB(skb)->vcc, ATM_SKB(skb)->vcc->dev); 355 skb, ATM_SKB(skb)->vcc, ATM_SKB(skb)->vcc->dev);
357 ret = ATM_SKB(skb)->vcc->send(ATM_SKB(skb)->vcc, skb) 356 ret = ATM_SKB(skb)->vcc->send(ATM_SKB(skb)->vcc, skb)
diff --git a/net/atm/pvc.c b/net/atm/pvc.c
index 9f75092fe778..2cb10af16afc 100644
--- a/net/atm/pvc.c
+++ b/net/atm/pvc.c
@@ -113,7 +113,7 @@ static const struct proto_ops pvc_proto_ops = {
113 .socketpair = sock_no_socketpair, 113 .socketpair = sock_no_socketpair,
114 .accept = sock_no_accept, 114 .accept = sock_no_accept,
115 .getname = pvc_getname, 115 .getname = pvc_getname,
116 .poll_mask = vcc_poll_mask, 116 .poll = vcc_poll,
117 .ioctl = vcc_ioctl, 117 .ioctl = vcc_ioctl,
118#ifdef CONFIG_COMPAT 118#ifdef CONFIG_COMPAT
119 .compat_ioctl = vcc_compat_ioctl, 119 .compat_ioctl = vcc_compat_ioctl,
diff --git a/net/atm/raw.c b/net/atm/raw.c
index ee10e8d46185..b3ba44aab0ee 100644
--- a/net/atm/raw.c
+++ b/net/atm/raw.c
@@ -35,8 +35,8 @@ static void atm_pop_raw(struct atm_vcc *vcc, struct sk_buff *skb)
35 struct sock *sk = sk_atm(vcc); 35 struct sock *sk = sk_atm(vcc);
36 36
37 pr_debug("(%d) %d -= %d\n", 37 pr_debug("(%d) %d -= %d\n",
38 vcc->vci, sk_wmem_alloc_get(sk), skb->truesize); 38 vcc->vci, sk_wmem_alloc_get(sk), ATM_SKB(skb)->acct_truesize);
39 WARN_ON(refcount_sub_and_test(skb->truesize, &sk->sk_wmem_alloc)); 39 WARN_ON(refcount_sub_and_test(ATM_SKB(skb)->acct_truesize, &sk->sk_wmem_alloc));
40 dev_kfree_skb_any(skb); 40 dev_kfree_skb_any(skb);
41 sk->sk_write_space(sk); 41 sk->sk_write_space(sk);
42} 42}
diff --git a/net/atm/svc.c b/net/atm/svc.c
index 53f4ad7087b1..2f91b766ac42 100644
--- a/net/atm/svc.c
+++ b/net/atm/svc.c
@@ -636,7 +636,7 @@ static const struct proto_ops svc_proto_ops = {
636 .socketpair = sock_no_socketpair, 636 .socketpair = sock_no_socketpair,
637 .accept = svc_accept, 637 .accept = svc_accept,
638 .getname = svc_getname, 638 .getname = svc_getname,
639 .poll_mask = vcc_poll_mask, 639 .poll = vcc_poll,
640 .ioctl = svc_ioctl, 640 .ioctl = svc_ioctl,
641#ifdef CONFIG_COMPAT 641#ifdef CONFIG_COMPAT
642 .compat_ioctl = svc_compat_ioctl, 642 .compat_ioctl = svc_compat_ioctl,
diff --git a/net/ax25/af_ax25.c b/net/ax25/af_ax25.c
index d1d2442ce573..c603d33d5410 100644
--- a/net/ax25/af_ax25.c
+++ b/net/ax25/af_ax25.c
@@ -1941,7 +1941,7 @@ static const struct proto_ops ax25_proto_ops = {
1941 .socketpair = sock_no_socketpair, 1941 .socketpair = sock_no_socketpair,
1942 .accept = ax25_accept, 1942 .accept = ax25_accept,
1943 .getname = ax25_getname, 1943 .getname = ax25_getname,
1944 .poll_mask = datagram_poll_mask, 1944 .poll = datagram_poll,
1945 .ioctl = ax25_ioctl, 1945 .ioctl = ax25_ioctl,
1946 .listen = ax25_listen, 1946 .listen = ax25_listen,
1947 .shutdown = ax25_shutdown, 1947 .shutdown = ax25_shutdown,
diff --git a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c
index 510ab4f55df5..3264e1873219 100644
--- a/net/bluetooth/af_bluetooth.c
+++ b/net/bluetooth/af_bluetooth.c
@@ -437,13 +437,16 @@ static inline __poll_t bt_accept_poll(struct sock *parent)
437 return 0; 437 return 0;
438} 438}
439 439
440__poll_t bt_sock_poll_mask(struct socket *sock, __poll_t events) 440__poll_t bt_sock_poll(struct file *file, struct socket *sock,
441 poll_table *wait)
441{ 442{
442 struct sock *sk = sock->sk; 443 struct sock *sk = sock->sk;
443 __poll_t mask = 0; 444 __poll_t mask = 0;
444 445
445 BT_DBG("sock %p, sk %p", sock, sk); 446 BT_DBG("sock %p, sk %p", sock, sk);
446 447
448 poll_wait(file, sk_sleep(sk), wait);
449
447 if (sk->sk_state == BT_LISTEN) 450 if (sk->sk_state == BT_LISTEN)
448 return bt_accept_poll(sk); 451 return bt_accept_poll(sk);
449 452
@@ -475,7 +478,7 @@ __poll_t bt_sock_poll_mask(struct socket *sock, __poll_t events)
475 478
476 return mask; 479 return mask;
477} 480}
478EXPORT_SYMBOL(bt_sock_poll_mask); 481EXPORT_SYMBOL(bt_sock_poll);
479 482
480int bt_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) 483int bt_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
481{ 484{
diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
index d6c099861538..1506e1632394 100644
--- a/net/bluetooth/hci_sock.c
+++ b/net/bluetooth/hci_sock.c
@@ -1975,7 +1975,7 @@ static const struct proto_ops hci_sock_ops = {
1975 .sendmsg = hci_sock_sendmsg, 1975 .sendmsg = hci_sock_sendmsg,
1976 .recvmsg = hci_sock_recvmsg, 1976 .recvmsg = hci_sock_recvmsg,
1977 .ioctl = hci_sock_ioctl, 1977 .ioctl = hci_sock_ioctl,
1978 .poll_mask = datagram_poll_mask, 1978 .poll = datagram_poll,
1979 .listen = sock_no_listen, 1979 .listen = sock_no_listen,
1980 .shutdown = sock_no_shutdown, 1980 .shutdown = sock_no_shutdown,
1981 .setsockopt = hci_sock_setsockopt, 1981 .setsockopt = hci_sock_setsockopt,
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
index 742a190034e6..686bdc6b35b0 100644
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
@@ -1653,7 +1653,7 @@ static const struct proto_ops l2cap_sock_ops = {
1653 .getname = l2cap_sock_getname, 1653 .getname = l2cap_sock_getname,
1654 .sendmsg = l2cap_sock_sendmsg, 1654 .sendmsg = l2cap_sock_sendmsg,
1655 .recvmsg = l2cap_sock_recvmsg, 1655 .recvmsg = l2cap_sock_recvmsg,
1656 .poll_mask = bt_sock_poll_mask, 1656 .poll = bt_sock_poll,
1657 .ioctl = bt_sock_ioctl, 1657 .ioctl = bt_sock_ioctl,
1658 .mmap = sock_no_mmap, 1658 .mmap = sock_no_mmap,
1659 .socketpair = sock_no_socketpair, 1659 .socketpair = sock_no_socketpair,
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
index 1cf57622473a..d606e9212291 100644
--- a/net/bluetooth/rfcomm/sock.c
+++ b/net/bluetooth/rfcomm/sock.c
@@ -1049,7 +1049,7 @@ static const struct proto_ops rfcomm_sock_ops = {
1049 .setsockopt = rfcomm_sock_setsockopt, 1049 .setsockopt = rfcomm_sock_setsockopt,
1050 .getsockopt = rfcomm_sock_getsockopt, 1050 .getsockopt = rfcomm_sock_getsockopt,
1051 .ioctl = rfcomm_sock_ioctl, 1051 .ioctl = rfcomm_sock_ioctl,
1052 .poll_mask = bt_sock_poll_mask, 1052 .poll = bt_sock_poll,
1053 .socketpair = sock_no_socketpair, 1053 .socketpair = sock_no_socketpair,
1054 .mmap = sock_no_mmap 1054 .mmap = sock_no_mmap
1055}; 1055};
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
index d60dbc61d170..413b8ee49fec 100644
--- a/net/bluetooth/sco.c
+++ b/net/bluetooth/sco.c
@@ -1197,7 +1197,7 @@ static const struct proto_ops sco_sock_ops = {
1197 .getname = sco_sock_getname, 1197 .getname = sco_sock_getname,
1198 .sendmsg = sco_sock_sendmsg, 1198 .sendmsg = sco_sock_sendmsg,
1199 .recvmsg = sco_sock_recvmsg, 1199 .recvmsg = sco_sock_recvmsg,
1200 .poll_mask = bt_sock_poll_mask, 1200 .poll = bt_sock_poll,
1201 .ioctl = bt_sock_ioctl, 1201 .ioctl = bt_sock_ioctl,
1202 .mmap = sock_no_mmap, 1202 .mmap = sock_no_mmap,
1203 .socketpair = sock_no_socketpair, 1203 .socketpair = sock_no_socketpair,
diff --git a/net/bpfilter/.gitignore b/net/bpfilter/.gitignore
new file mode 100644
index 000000000000..e97084e3eea2
--- /dev/null
+++ b/net/bpfilter/.gitignore
@@ -0,0 +1 @@
bpfilter_umh
diff --git a/net/bpfilter/Makefile b/net/bpfilter/Makefile
index e0bbe7583e58..051dc18b8ccb 100644
--- a/net/bpfilter/Makefile
+++ b/net/bpfilter/Makefile
@@ -21,8 +21,10 @@ endif
21# which bpfilter_kern.c passes further into umh blob loader at run-time 21# which bpfilter_kern.c passes further into umh blob loader at run-time
22quiet_cmd_copy_umh = GEN $@ 22quiet_cmd_copy_umh = GEN $@
23 cmd_copy_umh = echo ':' > $(obj)/.bpfilter_umh.o.cmd; \ 23 cmd_copy_umh = echo ':' > $(obj)/.bpfilter_umh.o.cmd; \
24 $(OBJCOPY) -I binary -O `$(OBJDUMP) -f $<|grep format|cut -d' ' -f8` \ 24 $(OBJCOPY) -I binary \
25 -B `$(OBJDUMP) -f $<|grep architecture|cut -d, -f1|cut -d' ' -f2` \ 25 `LC_ALL=C $(OBJDUMP) -f net/bpfilter/bpfilter_umh \
26 |awk -F' |,' '/file format/{print "-O",$$NF} \
27 /^architecture:/{print "-B",$$2}'` \
26 --rename-section .data=.init.rodata $< $@ 28 --rename-section .data=.init.rodata $< $@
27 29
28$(obj)/bpfilter_umh.o: $(obj)/bpfilter_umh 30$(obj)/bpfilter_umh.o: $(obj)/bpfilter_umh
diff --git a/net/caif/caif_socket.c b/net/caif/caif_socket.c
index c7991867d622..a6fb1b3bcad9 100644
--- a/net/caif/caif_socket.c
+++ b/net/caif/caif_socket.c
@@ -934,11 +934,15 @@ static int caif_release(struct socket *sock)
934} 934}
935 935
936/* Copied from af_unix.c:unix_poll(), added CAIF tx_flow handling */ 936/* Copied from af_unix.c:unix_poll(), added CAIF tx_flow handling */
937static __poll_t caif_poll_mask(struct socket *sock, __poll_t events) 937static __poll_t caif_poll(struct file *file,
938 struct socket *sock, poll_table *wait)
938{ 939{
939 struct sock *sk = sock->sk; 940 struct sock *sk = sock->sk;
941 __poll_t mask;
940 struct caifsock *cf_sk = container_of(sk, struct caifsock, sk); 942 struct caifsock *cf_sk = container_of(sk, struct caifsock, sk);
941 __poll_t mask = 0; 943
944 sock_poll_wait(file, sk_sleep(sk), wait);
945 mask = 0;
942 946
943 /* exceptional events? */ 947 /* exceptional events? */
944 if (sk->sk_err) 948 if (sk->sk_err)
@@ -972,7 +976,7 @@ static const struct proto_ops caif_seqpacket_ops = {
972 .socketpair = sock_no_socketpair, 976 .socketpair = sock_no_socketpair,
973 .accept = sock_no_accept, 977 .accept = sock_no_accept,
974 .getname = sock_no_getname, 978 .getname = sock_no_getname,
975 .poll_mask = caif_poll_mask, 979 .poll = caif_poll,
976 .ioctl = sock_no_ioctl, 980 .ioctl = sock_no_ioctl,
977 .listen = sock_no_listen, 981 .listen = sock_no_listen,
978 .shutdown = sock_no_shutdown, 982 .shutdown = sock_no_shutdown,
@@ -993,7 +997,7 @@ static const struct proto_ops caif_stream_ops = {
993 .socketpair = sock_no_socketpair, 997 .socketpair = sock_no_socketpair,
994 .accept = sock_no_accept, 998 .accept = sock_no_accept,
995 .getname = sock_no_getname, 999 .getname = sock_no_getname,
996 .poll_mask = caif_poll_mask, 1000 .poll = caif_poll,
997 .ioctl = sock_no_ioctl, 1001 .ioctl = sock_no_ioctl,
998 .listen = sock_no_listen, 1002 .listen = sock_no_listen,
999 .shutdown = sock_no_shutdown, 1003 .shutdown = sock_no_shutdown,
diff --git a/net/can/bcm.c b/net/can/bcm.c
index 9393f25df08d..0af8f0db892a 100644
--- a/net/can/bcm.c
+++ b/net/can/bcm.c
@@ -1660,7 +1660,7 @@ static const struct proto_ops bcm_ops = {
1660 .socketpair = sock_no_socketpair, 1660 .socketpair = sock_no_socketpair,
1661 .accept = sock_no_accept, 1661 .accept = sock_no_accept,
1662 .getname = sock_no_getname, 1662 .getname = sock_no_getname,
1663 .poll_mask = datagram_poll_mask, 1663 .poll = datagram_poll,
1664 .ioctl = can_ioctl, /* use can_ioctl() from af_can.c */ 1664 .ioctl = can_ioctl, /* use can_ioctl() from af_can.c */
1665 .listen = sock_no_listen, 1665 .listen = sock_no_listen,
1666 .shutdown = sock_no_shutdown, 1666 .shutdown = sock_no_shutdown,
diff --git a/net/can/raw.c b/net/can/raw.c
index fd7e2f49ea6a..1051eee82581 100644
--- a/net/can/raw.c
+++ b/net/can/raw.c
@@ -843,7 +843,7 @@ static const struct proto_ops raw_ops = {
843 .socketpair = sock_no_socketpair, 843 .socketpair = sock_no_socketpair,
844 .accept = sock_no_accept, 844 .accept = sock_no_accept,
845 .getname = raw_getname, 845 .getname = raw_getname,
846 .poll_mask = datagram_poll_mask, 846 .poll = datagram_poll,
847 .ioctl = can_ioctl, /* use can_ioctl() from af_can.c */ 847 .ioctl = can_ioctl, /* use can_ioctl() from af_can.c */
848 .listen = sock_no_listen, 848 .listen = sock_no_listen,
849 .shutdown = sock_no_shutdown, 849 .shutdown = sock_no_shutdown,
diff --git a/net/core/datagram.c b/net/core/datagram.c
index f19bf3dc2bd6..9938952c5c78 100644
--- a/net/core/datagram.c
+++ b/net/core/datagram.c
@@ -819,8 +819,9 @@ EXPORT_SYMBOL(skb_copy_and_csum_datagram_msg);
819 819
820/** 820/**
821 * datagram_poll - generic datagram poll 821 * datagram_poll - generic datagram poll
822 * @file: file struct
822 * @sock: socket 823 * @sock: socket
823 * @events to wait for 824 * @wait: poll table
824 * 825 *
825 * Datagram poll: Again totally generic. This also handles 826 * Datagram poll: Again totally generic. This also handles
826 * sequenced packet sockets providing the socket receive queue 827 * sequenced packet sockets providing the socket receive queue
@@ -830,10 +831,14 @@ EXPORT_SYMBOL(skb_copy_and_csum_datagram_msg);
830 * and you use a different write policy from sock_writeable() 831 * and you use a different write policy from sock_writeable()
831 * then please supply your own write_space callback. 832 * then please supply your own write_space callback.
832 */ 833 */
833__poll_t datagram_poll_mask(struct socket *sock, __poll_t events) 834__poll_t datagram_poll(struct file *file, struct socket *sock,
835 poll_table *wait)
834{ 836{
835 struct sock *sk = sock->sk; 837 struct sock *sk = sock->sk;
836 __poll_t mask = 0; 838 __poll_t mask;
839
840 sock_poll_wait(file, sk_sleep(sk), wait);
841 mask = 0;
837 842
838 /* exceptional events? */ 843 /* exceptional events? */
839 if (sk->sk_err || !skb_queue_empty(&sk->sk_error_queue)) 844 if (sk->sk_err || !skb_queue_empty(&sk->sk_error_queue))
@@ -866,4 +871,4 @@ __poll_t datagram_poll_mask(struct socket *sock, __poll_t events)
866 871
867 return mask; 872 return mask;
868} 873}
869EXPORT_SYMBOL(datagram_poll_mask); 874EXPORT_SYMBOL(datagram_poll);
diff --git a/net/core/dev.c b/net/core/dev.c
index 57b7bab5f70b..a5aa1c7444e6 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -8643,7 +8643,8 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
8643 /* We get here if we can't use the current device name */ 8643 /* We get here if we can't use the current device name */
8644 if (!pat) 8644 if (!pat)
8645 goto out; 8645 goto out;
8646 if (dev_get_valid_name(net, dev, pat) < 0) 8646 err = dev_get_valid_name(net, dev, pat);
8647 if (err < 0)
8647 goto out; 8648 goto out;
8648 } 8649 }
8649 8650
@@ -8655,7 +8656,6 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
8655 dev_close(dev); 8656 dev_close(dev);
8656 8657
8657 /* And unlink it from device chain */ 8658 /* And unlink it from device chain */
8658 err = -ENODEV;
8659 unlist_netdevice(dev); 8659 unlist_netdevice(dev);
8660 8660
8661 synchronize_net(); 8661 synchronize_net();
diff --git a/net/core/filter.c b/net/core/filter.c
index 3d9ba7e5965a..e7f12e9f598c 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -3214,20 +3214,6 @@ err:
3214} 3214}
3215EXPORT_SYMBOL_GPL(xdp_do_redirect); 3215EXPORT_SYMBOL_GPL(xdp_do_redirect);
3216 3216
3217static int __xdp_generic_ok_fwd_dev(struct sk_buff *skb, struct net_device *fwd)
3218{
3219 unsigned int len;
3220
3221 if (unlikely(!(fwd->flags & IFF_UP)))
3222 return -ENETDOWN;
3223
3224 len = fwd->mtu + fwd->hard_header_len + VLAN_HLEN;
3225 if (skb->len > len)
3226 return -EMSGSIZE;
3227
3228 return 0;
3229}
3230
3231static int xdp_do_generic_redirect_map(struct net_device *dev, 3217static int xdp_do_generic_redirect_map(struct net_device *dev,
3232 struct sk_buff *skb, 3218 struct sk_buff *skb,
3233 struct xdp_buff *xdp, 3219 struct xdp_buff *xdp,
@@ -3256,10 +3242,11 @@ static int xdp_do_generic_redirect_map(struct net_device *dev,
3256 } 3242 }
3257 3243
3258 if (map->map_type == BPF_MAP_TYPE_DEVMAP) { 3244 if (map->map_type == BPF_MAP_TYPE_DEVMAP) {
3259 if (unlikely((err = __xdp_generic_ok_fwd_dev(skb, fwd)))) 3245 struct bpf_dtab_netdev *dst = fwd;
3246
3247 err = dev_map_generic_redirect(dst, skb, xdp_prog);
3248 if (unlikely(err))
3260 goto err; 3249 goto err;
3261 skb->dev = fwd;
3262 generic_xdp_tx(skb, xdp_prog);
3263 } else if (map->map_type == BPF_MAP_TYPE_XSKMAP) { 3250 } else if (map->map_type == BPF_MAP_TYPE_XSKMAP) {
3264 struct xdp_sock *xs = fwd; 3251 struct xdp_sock *xs = fwd;
3265 3252
diff --git a/net/dccp/ccids/ccid3.c b/net/dccp/ccids/ccid3.c
index 8b5ba6dffac7..12877a1514e7 100644
--- a/net/dccp/ccids/ccid3.c
+++ b/net/dccp/ccids/ccid3.c
@@ -600,7 +600,7 @@ static void ccid3_hc_rx_send_feedback(struct sock *sk,
600{ 600{
601 struct ccid3_hc_rx_sock *hc = ccid3_hc_rx_sk(sk); 601 struct ccid3_hc_rx_sock *hc = ccid3_hc_rx_sk(sk);
602 struct dccp_sock *dp = dccp_sk(sk); 602 struct dccp_sock *dp = dccp_sk(sk);
603 ktime_t now = ktime_get_real(); 603 ktime_t now = ktime_get();
604 s64 delta = 0; 604 s64 delta = 0;
605 605
606 switch (fbtype) { 606 switch (fbtype) {
@@ -625,15 +625,14 @@ static void ccid3_hc_rx_send_feedback(struct sock *sk,
625 case CCID3_FBACK_PERIODIC: 625 case CCID3_FBACK_PERIODIC:
626 delta = ktime_us_delta(now, hc->rx_tstamp_last_feedback); 626 delta = ktime_us_delta(now, hc->rx_tstamp_last_feedback);
627 if (delta <= 0) 627 if (delta <= 0)
628 DCCP_BUG("delta (%ld) <= 0", (long)delta); 628 delta = 1;
629 else 629 hc->rx_x_recv = scaled_div32(hc->rx_bytes_recv, delta);
630 hc->rx_x_recv = scaled_div32(hc->rx_bytes_recv, delta);
631 break; 630 break;
632 default: 631 default:
633 return; 632 return;
634 } 633 }
635 634
636 ccid3_pr_debug("Interval %ldusec, X_recv=%u, 1/p=%u\n", (long)delta, 635 ccid3_pr_debug("Interval %lldusec, X_recv=%u, 1/p=%u\n", delta,
637 hc->rx_x_recv, hc->rx_pinv); 636 hc->rx_x_recv, hc->rx_pinv);
638 637
639 hc->rx_tstamp_last_feedback = now; 638 hc->rx_tstamp_last_feedback = now;
@@ -680,7 +679,8 @@ static int ccid3_hc_rx_insert_options(struct sock *sk, struct sk_buff *skb)
680static u32 ccid3_first_li(struct sock *sk) 679static u32 ccid3_first_li(struct sock *sk)
681{ 680{
682 struct ccid3_hc_rx_sock *hc = ccid3_hc_rx_sk(sk); 681 struct ccid3_hc_rx_sock *hc = ccid3_hc_rx_sk(sk);
683 u32 x_recv, p, delta; 682 u32 x_recv, p;
683 s64 delta;
684 u64 fval; 684 u64 fval;
685 685
686 if (hc->rx_rtt == 0) { 686 if (hc->rx_rtt == 0) {
@@ -688,7 +688,9 @@ static u32 ccid3_first_li(struct sock *sk)
688 hc->rx_rtt = DCCP_FALLBACK_RTT; 688 hc->rx_rtt = DCCP_FALLBACK_RTT;
689 } 689 }
690 690
691 delta = ktime_to_us(net_timedelta(hc->rx_tstamp_last_feedback)); 691 delta = ktime_us_delta(ktime_get(), hc->rx_tstamp_last_feedback);
692 if (delta <= 0)
693 delta = 1;
692 x_recv = scaled_div32(hc->rx_bytes_recv, delta); 694 x_recv = scaled_div32(hc->rx_bytes_recv, delta);
693 if (x_recv == 0) { /* would also trigger divide-by-zero */ 695 if (x_recv == 0) { /* would also trigger divide-by-zero */
694 DCCP_WARN("X_recv==0\n"); 696 DCCP_WARN("X_recv==0\n");
diff --git a/net/dccp/dccp.h b/net/dccp/dccp.h
index 0ea2ee56ac1b..f91e3816806b 100644
--- a/net/dccp/dccp.h
+++ b/net/dccp/dccp.h
@@ -316,7 +316,8 @@ int dccp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int nonblock,
316 int flags, int *addr_len); 316 int flags, int *addr_len);
317void dccp_shutdown(struct sock *sk, int how); 317void dccp_shutdown(struct sock *sk, int how);
318int inet_dccp_listen(struct socket *sock, int backlog); 318int inet_dccp_listen(struct socket *sock, int backlog);
319__poll_t dccp_poll_mask(struct socket *sock, __poll_t events); 319__poll_t dccp_poll(struct file *file, struct socket *sock,
320 poll_table *wait);
320int dccp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len); 321int dccp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len);
321void dccp_req_err(struct sock *sk, u64 seq); 322void dccp_req_err(struct sock *sk, u64 seq);
322 323
diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c
index a9e478cd3787..b08feb219b44 100644
--- a/net/dccp/ipv4.c
+++ b/net/dccp/ipv4.c
@@ -984,7 +984,7 @@ static const struct proto_ops inet_dccp_ops = {
984 .accept = inet_accept, 984 .accept = inet_accept,
985 .getname = inet_getname, 985 .getname = inet_getname,
986 /* FIXME: work on tcp_poll to rename it to inet_csk_poll */ 986 /* FIXME: work on tcp_poll to rename it to inet_csk_poll */
987 .poll_mask = dccp_poll_mask, 987 .poll = dccp_poll,
988 .ioctl = inet_ioctl, 988 .ioctl = inet_ioctl,
989 /* FIXME: work on inet_listen to rename it to sock_common_listen */ 989 /* FIXME: work on inet_listen to rename it to sock_common_listen */
990 .listen = inet_dccp_listen, 990 .listen = inet_dccp_listen,
diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c
index 17fc4e0166ba..6344f1b18a6a 100644
--- a/net/dccp/ipv6.c
+++ b/net/dccp/ipv6.c
@@ -1070,7 +1070,7 @@ static const struct proto_ops inet6_dccp_ops = {
1070 .socketpair = sock_no_socketpair, 1070 .socketpair = sock_no_socketpair,
1071 .accept = inet_accept, 1071 .accept = inet_accept,
1072 .getname = inet6_getname, 1072 .getname = inet6_getname,
1073 .poll_mask = dccp_poll_mask, 1073 .poll = dccp_poll,
1074 .ioctl = inet6_ioctl, 1074 .ioctl = inet6_ioctl,
1075 .listen = inet_dccp_listen, 1075 .listen = inet_dccp_listen,
1076 .shutdown = inet_shutdown, 1076 .shutdown = inet_shutdown,
diff --git a/net/dccp/proto.c b/net/dccp/proto.c
index ca21c1c76da0..0d56e36a6db7 100644
--- a/net/dccp/proto.c
+++ b/net/dccp/proto.c
@@ -312,11 +312,20 @@ int dccp_disconnect(struct sock *sk, int flags)
312 312
313EXPORT_SYMBOL_GPL(dccp_disconnect); 313EXPORT_SYMBOL_GPL(dccp_disconnect);
314 314
315__poll_t dccp_poll_mask(struct socket *sock, __poll_t events) 315/*
316 * Wait for a DCCP event.
317 *
318 * Note that we don't need to lock the socket, as the upper poll layers
319 * take care of normal races (between the test and the event) and we don't
320 * go look at any of the socket buffers directly.
321 */
322__poll_t dccp_poll(struct file *file, struct socket *sock,
323 poll_table *wait)
316{ 324{
317 __poll_t mask; 325 __poll_t mask;
318 struct sock *sk = sock->sk; 326 struct sock *sk = sock->sk;
319 327
328 sock_poll_wait(file, sk_sleep(sk), wait);
320 if (sk->sk_state == DCCP_LISTEN) 329 if (sk->sk_state == DCCP_LISTEN)
321 return inet_csk_listen_poll(sk); 330 return inet_csk_listen_poll(sk);
322 331
@@ -358,7 +367,7 @@ __poll_t dccp_poll_mask(struct socket *sock, __poll_t events)
358 return mask; 367 return mask;
359} 368}
360 369
361EXPORT_SYMBOL_GPL(dccp_poll_mask); 370EXPORT_SYMBOL_GPL(dccp_poll);
362 371
363int dccp_ioctl(struct sock *sk, int cmd, unsigned long arg) 372int dccp_ioctl(struct sock *sk, int cmd, unsigned long arg)
364{ 373{
diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c
index 9a686d890bfa..7d6ff983ba2c 100644
--- a/net/decnet/af_decnet.c
+++ b/net/decnet/af_decnet.c
@@ -1207,11 +1207,11 @@ static int dn_getname(struct socket *sock, struct sockaddr *uaddr,int peer)
1207} 1207}
1208 1208
1209 1209
1210static __poll_t dn_poll_mask(struct socket *sock, __poll_t events) 1210static __poll_t dn_poll(struct file *file, struct socket *sock, poll_table *wait)
1211{ 1211{
1212 struct sock *sk = sock->sk; 1212 struct sock *sk = sock->sk;
1213 struct dn_scp *scp = DN_SK(sk); 1213 struct dn_scp *scp = DN_SK(sk);
1214 __poll_t mask = datagram_poll_mask(sock, events); 1214 __poll_t mask = datagram_poll(file, sock, wait);
1215 1215
1216 if (!skb_queue_empty(&scp->other_receive_queue)) 1216 if (!skb_queue_empty(&scp->other_receive_queue))
1217 mask |= EPOLLRDBAND; 1217 mask |= EPOLLRDBAND;
@@ -2331,7 +2331,7 @@ static const struct proto_ops dn_proto_ops = {
2331 .socketpair = sock_no_socketpair, 2331 .socketpair = sock_no_socketpair,
2332 .accept = dn_accept, 2332 .accept = dn_accept,
2333 .getname = dn_getname, 2333 .getname = dn_getname,
2334 .poll_mask = dn_poll_mask, 2334 .poll = dn_poll,
2335 .ioctl = dn_ioctl, 2335 .ioctl = dn_ioctl,
2336 .listen = dn_listen, 2336 .listen = dn_listen,
2337 .shutdown = dn_shutdown, 2337 .shutdown = dn_shutdown,
diff --git a/net/ieee802154/socket.c b/net/ieee802154/socket.c
index a0768d2759b8..a60658c85a9a 100644
--- a/net/ieee802154/socket.c
+++ b/net/ieee802154/socket.c
@@ -423,7 +423,7 @@ static const struct proto_ops ieee802154_raw_ops = {
423 .socketpair = sock_no_socketpair, 423 .socketpair = sock_no_socketpair,
424 .accept = sock_no_accept, 424 .accept = sock_no_accept,
425 .getname = sock_no_getname, 425 .getname = sock_no_getname,
426 .poll_mask = datagram_poll_mask, 426 .poll = datagram_poll,
427 .ioctl = ieee802154_sock_ioctl, 427 .ioctl = ieee802154_sock_ioctl,
428 .listen = sock_no_listen, 428 .listen = sock_no_listen,
429 .shutdown = sock_no_shutdown, 429 .shutdown = sock_no_shutdown,
@@ -969,7 +969,7 @@ static const struct proto_ops ieee802154_dgram_ops = {
969 .socketpair = sock_no_socketpair, 969 .socketpair = sock_no_socketpair,
970 .accept = sock_no_accept, 970 .accept = sock_no_accept,
971 .getname = sock_no_getname, 971 .getname = sock_no_getname,
972 .poll_mask = datagram_poll_mask, 972 .poll = datagram_poll,
973 .ioctl = ieee802154_sock_ioctl, 973 .ioctl = ieee802154_sock_ioctl,
974 .listen = sock_no_listen, 974 .listen = sock_no_listen,
975 .shutdown = sock_no_shutdown, 975 .shutdown = sock_no_shutdown,
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index 15e125558c76..b403499fdabe 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -986,7 +986,7 @@ const struct proto_ops inet_stream_ops = {
986 .socketpair = sock_no_socketpair, 986 .socketpair = sock_no_socketpair,
987 .accept = inet_accept, 987 .accept = inet_accept,
988 .getname = inet_getname, 988 .getname = inet_getname,
989 .poll_mask = tcp_poll_mask, 989 .poll = tcp_poll,
990 .ioctl = inet_ioctl, 990 .ioctl = inet_ioctl,
991 .listen = inet_listen, 991 .listen = inet_listen,
992 .shutdown = inet_shutdown, 992 .shutdown = inet_shutdown,
@@ -1021,7 +1021,7 @@ const struct proto_ops inet_dgram_ops = {
1021 .socketpair = sock_no_socketpair, 1021 .socketpair = sock_no_socketpair,
1022 .accept = sock_no_accept, 1022 .accept = sock_no_accept,
1023 .getname = inet_getname, 1023 .getname = inet_getname,
1024 .poll_mask = udp_poll_mask, 1024 .poll = udp_poll,
1025 .ioctl = inet_ioctl, 1025 .ioctl = inet_ioctl,
1026 .listen = sock_no_listen, 1026 .listen = sock_no_listen,
1027 .shutdown = inet_shutdown, 1027 .shutdown = inet_shutdown,
@@ -1042,7 +1042,7 @@ EXPORT_SYMBOL(inet_dgram_ops);
1042 1042
1043/* 1043/*
1044 * For SOCK_RAW sockets; should be the same as inet_dgram_ops but without 1044 * For SOCK_RAW sockets; should be the same as inet_dgram_ops but without
1045 * udp_poll_mask 1045 * udp_poll
1046 */ 1046 */
1047static const struct proto_ops inet_sockraw_ops = { 1047static const struct proto_ops inet_sockraw_ops = {
1048 .family = PF_INET, 1048 .family = PF_INET,
@@ -1053,7 +1053,7 @@ static const struct proto_ops inet_sockraw_ops = {
1053 .socketpair = sock_no_socketpair, 1053 .socketpair = sock_no_socketpair,
1054 .accept = sock_no_accept, 1054 .accept = sock_no_accept,
1055 .getname = inet_getname, 1055 .getname = inet_getname,
1056 .poll_mask = datagram_poll_mask, 1056 .poll = datagram_poll,
1057 .ioctl = inet_ioctl, 1057 .ioctl = inet_ioctl,
1058 .listen = sock_no_listen, 1058 .listen = sock_no_listen,
1059 .shutdown = inet_shutdown, 1059 .shutdown = inet_shutdown,
diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c
index 31ff46daae97..3647167c8fa3 100644
--- a/net/ipv4/inet_hashtables.c
+++ b/net/ipv4/inet_hashtables.c
@@ -243,9 +243,9 @@ static inline int compute_score(struct sock *sk, struct net *net,
243 bool dev_match = (sk->sk_bound_dev_if == dif || 243 bool dev_match = (sk->sk_bound_dev_if == dif ||
244 sk->sk_bound_dev_if == sdif); 244 sk->sk_bound_dev_if == sdif);
245 245
246 if (exact_dif && !dev_match) 246 if (!dev_match)
247 return -1; 247 return -1;
248 if (sk->sk_bound_dev_if && dev_match) 248 if (sk->sk_bound_dev_if)
249 score += 4; 249 score += 4;
250 } 250 }
251 if (sk->sk_incoming_cpu == raw_smp_processor_id()) 251 if (sk->sk_incoming_cpu == raw_smp_processor_id())
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
index af5a830ff6ad..b3308e9d9762 100644
--- a/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -1145,7 +1145,8 @@ static int ip_setup_cork(struct sock *sk, struct inet_cork *cork,
1145 cork->fragsize = ip_sk_use_pmtu(sk) ? 1145 cork->fragsize = ip_sk_use_pmtu(sk) ?
1146 dst_mtu(&rt->dst) : rt->dst.dev->mtu; 1146 dst_mtu(&rt->dst) : rt->dst.dev->mtu;
1147 1147
1148 cork->gso_size = sk->sk_type == SOCK_DGRAM ? ipc->gso_size : 0; 1148 cork->gso_size = sk->sk_type == SOCK_DGRAM &&
1149 sk->sk_protocol == IPPROTO_UDP ? ipc->gso_size : 0;
1149 cork->dst = &rt->dst; 1150 cork->dst = &rt->dst;
1150 cork->length = 0; 1151 cork->length = 0;
1151 cork->ttl = ipc->ttl; 1152 cork->ttl = ipc->ttl;
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 141acd92e58a..e7b53d2a971f 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -494,21 +494,32 @@ static inline bool tcp_stream_is_readable(const struct tcp_sock *tp,
494} 494}
495 495
496/* 496/*
497 * Socket is not locked. We are protected from async events by poll logic and 497 * Wait for a TCP event.
498 * correct handling of state changes made by other threads is impossible in 498 *
499 * any case. 499 * Note that we don't need to lock the socket, as the upper poll layers
500 * take care of normal races (between the test and the event) and we don't
501 * go look at any of the socket buffers directly.
500 */ 502 */
501__poll_t tcp_poll_mask(struct socket *sock, __poll_t events) 503__poll_t tcp_poll(struct file *file, struct socket *sock, poll_table *wait)
502{ 504{
505 __poll_t mask;
503 struct sock *sk = sock->sk; 506 struct sock *sk = sock->sk;
504 const struct tcp_sock *tp = tcp_sk(sk); 507 const struct tcp_sock *tp = tcp_sk(sk);
505 __poll_t mask = 0;
506 int state; 508 int state;
507 509
510 sock_poll_wait(file, sk_sleep(sk), wait);
511
508 state = inet_sk_state_load(sk); 512 state = inet_sk_state_load(sk);
509 if (state == TCP_LISTEN) 513 if (state == TCP_LISTEN)
510 return inet_csk_listen_poll(sk); 514 return inet_csk_listen_poll(sk);
511 515
516 /* Socket is not locked. We are protected from async events
517 * by poll logic and correct handling of state changes
518 * made by other threads is impossible in any case.
519 */
520
521 mask = 0;
522
512 /* 523 /*
513 * EPOLLHUP is certainly not done right. But poll() doesn't 524 * EPOLLHUP is certainly not done right. But poll() doesn't
514 * have a notion of HUP in just one direction, and for a 525 * have a notion of HUP in just one direction, and for a
@@ -589,7 +600,7 @@ __poll_t tcp_poll_mask(struct socket *sock, __poll_t events)
589 600
590 return mask; 601 return mask;
591} 602}
592EXPORT_SYMBOL(tcp_poll_mask); 603EXPORT_SYMBOL(tcp_poll);
593 604
594int tcp_ioctl(struct sock *sk, int cmd, unsigned long arg) 605int tcp_ioctl(struct sock *sk, int cmd, unsigned long arg)
595{ 606{
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 9bb27df4dac5..24e116ddae79 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -2591,7 +2591,7 @@ int compat_udp_getsockopt(struct sock *sk, int level, int optname,
2591 * udp_poll - wait for a UDP event. 2591 * udp_poll - wait for a UDP event.
2592 * @file - file struct 2592 * @file - file struct
2593 * @sock - socket 2593 * @sock - socket
2594 * @events - events to wait for 2594 * @wait - poll table
2595 * 2595 *
2596 * This is same as datagram poll, except for the special case of 2596 * This is same as datagram poll, except for the special case of
2597 * blocking sockets. If application is using a blocking fd 2597 * blocking sockets. If application is using a blocking fd
@@ -2600,23 +2600,23 @@ int compat_udp_getsockopt(struct sock *sk, int level, int optname,
2600 * but then block when reading it. Add special case code 2600 * but then block when reading it. Add special case code
2601 * to work around these arguably broken applications. 2601 * to work around these arguably broken applications.
2602 */ 2602 */
2603__poll_t udp_poll_mask(struct socket *sock, __poll_t events) 2603__poll_t udp_poll(struct file *file, struct socket *sock, poll_table *wait)
2604{ 2604{
2605 __poll_t mask = datagram_poll_mask(sock, events); 2605 __poll_t mask = datagram_poll(file, sock, wait);
2606 struct sock *sk = sock->sk; 2606 struct sock *sk = sock->sk;
2607 2607
2608 if (!skb_queue_empty(&udp_sk(sk)->reader_queue)) 2608 if (!skb_queue_empty(&udp_sk(sk)->reader_queue))
2609 mask |= EPOLLIN | EPOLLRDNORM; 2609 mask |= EPOLLIN | EPOLLRDNORM;
2610 2610
2611 /* Check for false positives due to checksum errors */ 2611 /* Check for false positives due to checksum errors */
2612 if ((mask & EPOLLRDNORM) && !(sock->file->f_flags & O_NONBLOCK) && 2612 if ((mask & EPOLLRDNORM) && !(file->f_flags & O_NONBLOCK) &&
2613 !(sk->sk_shutdown & RCV_SHUTDOWN) && first_packet_length(sk) == -1) 2613 !(sk->sk_shutdown & RCV_SHUTDOWN) && first_packet_length(sk) == -1)
2614 mask &= ~(EPOLLIN | EPOLLRDNORM); 2614 mask &= ~(EPOLLIN | EPOLLRDNORM);
2615 2615
2616 return mask; 2616 return mask;
2617 2617
2618} 2618}
2619EXPORT_SYMBOL(udp_poll_mask); 2619EXPORT_SYMBOL(udp_poll);
2620 2620
2621int udp_abort(struct sock *sk, int err) 2621int udp_abort(struct sock *sk, int err)
2622{ 2622{
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
index 74f2a261e8df..9ed0eae91758 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -570,7 +570,7 @@ const struct proto_ops inet6_stream_ops = {
570 .socketpair = sock_no_socketpair, /* a do nothing */ 570 .socketpair = sock_no_socketpair, /* a do nothing */
571 .accept = inet_accept, /* ok */ 571 .accept = inet_accept, /* ok */
572 .getname = inet6_getname, 572 .getname = inet6_getname,
573 .poll_mask = tcp_poll_mask, /* ok */ 573 .poll = tcp_poll, /* ok */
574 .ioctl = inet6_ioctl, /* must change */ 574 .ioctl = inet6_ioctl, /* must change */
575 .listen = inet_listen, /* ok */ 575 .listen = inet_listen, /* ok */
576 .shutdown = inet_shutdown, /* ok */ 576 .shutdown = inet_shutdown, /* ok */
@@ -603,7 +603,7 @@ const struct proto_ops inet6_dgram_ops = {
603 .socketpair = sock_no_socketpair, /* a do nothing */ 603 .socketpair = sock_no_socketpair, /* a do nothing */
604 .accept = sock_no_accept, /* a do nothing */ 604 .accept = sock_no_accept, /* a do nothing */
605 .getname = inet6_getname, 605 .getname = inet6_getname,
606 .poll_mask = udp_poll_mask, /* ok */ 606 .poll = udp_poll, /* ok */
607 .ioctl = inet6_ioctl, /* must change */ 607 .ioctl = inet6_ioctl, /* must change */
608 .listen = sock_no_listen, /* ok */ 608 .listen = sock_no_listen, /* ok */
609 .shutdown = inet_shutdown, /* ok */ 609 .shutdown = inet_shutdown, /* ok */
diff --git a/net/ipv6/inet6_hashtables.c b/net/ipv6/inet6_hashtables.c
index 2febe26de6a1..595ad408dba0 100644
--- a/net/ipv6/inet6_hashtables.c
+++ b/net/ipv6/inet6_hashtables.c
@@ -113,9 +113,9 @@ static inline int compute_score(struct sock *sk, struct net *net,
113 bool dev_match = (sk->sk_bound_dev_if == dif || 113 bool dev_match = (sk->sk_bound_dev_if == dif ||
114 sk->sk_bound_dev_if == sdif); 114 sk->sk_bound_dev_if == sdif);
115 115
116 if (exact_dif && !dev_match) 116 if (!dev_match)
117 return -1; 117 return -1;
118 if (sk->sk_bound_dev_if && dev_match) 118 if (sk->sk_bound_dev_if)
119 score++; 119 score++;
120 } 120 }
121 if (sk->sk_incoming_cpu == raw_smp_processor_id()) 121 if (sk->sk_incoming_cpu == raw_smp_processor_id())
diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
index 39d1d487eca2..1fb2f3118d60 100644
--- a/net/ipv6/ip6_fib.c
+++ b/net/ipv6/ip6_fib.c
@@ -167,8 +167,9 @@ struct fib6_info *fib6_info_alloc(gfp_t gfp_flags)
167 return f6i; 167 return f6i;
168} 168}
169 169
170void fib6_info_destroy(struct fib6_info *f6i) 170void fib6_info_destroy_rcu(struct rcu_head *head)
171{ 171{
172 struct fib6_info *f6i = container_of(head, struct fib6_info, rcu);
172 struct rt6_exception_bucket *bucket; 173 struct rt6_exception_bucket *bucket;
173 struct dst_metrics *m; 174 struct dst_metrics *m;
174 175
@@ -206,7 +207,7 @@ void fib6_info_destroy(struct fib6_info *f6i)
206 207
207 kfree(f6i); 208 kfree(f6i);
208} 209}
209EXPORT_SYMBOL_GPL(fib6_info_destroy); 210EXPORT_SYMBOL_GPL(fib6_info_destroy_rcu);
210 211
211static struct fib6_node *node_alloc(struct net *net) 212static struct fib6_node *node_alloc(struct net *net)
212{ 213{
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 021e5aef6ba3..a14fb4fcdf18 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1219,7 +1219,8 @@ static int ip6_setup_cork(struct sock *sk, struct inet_cork_full *cork,
1219 if (mtu < IPV6_MIN_MTU) 1219 if (mtu < IPV6_MIN_MTU)
1220 return -EINVAL; 1220 return -EINVAL;
1221 cork->base.fragsize = mtu; 1221 cork->base.fragsize = mtu;
1222 cork->base.gso_size = sk->sk_type == SOCK_DGRAM ? ipc6->gso_size : 0; 1222 cork->base.gso_size = sk->sk_type == SOCK_DGRAM &&
1223 sk->sk_protocol == IPPROTO_UDP ? ipc6->gso_size : 0;
1223 1224
1224 if (dst_allfrag(xfrm_dst_path(&rt->dst))) 1225 if (dst_allfrag(xfrm_dst_path(&rt->dst)))
1225 cork->base.flags |= IPCORK_ALLFRAG; 1226 cork->base.flags |= IPCORK_ALLFRAG;
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index 975021df7c1c..c0c74088f2af 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -2082,7 +2082,8 @@ void ipv6_mc_dad_complete(struct inet6_dev *idev)
2082 mld_send_initial_cr(idev); 2082 mld_send_initial_cr(idev);
2083 idev->mc_dad_count--; 2083 idev->mc_dad_count--;
2084 if (idev->mc_dad_count) 2084 if (idev->mc_dad_count)
2085 mld_dad_start_timer(idev, idev->mc_maxdelay); 2085 mld_dad_start_timer(idev,
2086 unsolicited_report_interval(idev));
2086 } 2087 }
2087} 2088}
2088 2089
@@ -2094,7 +2095,8 @@ static void mld_dad_timer_expire(struct timer_list *t)
2094 if (idev->mc_dad_count) { 2095 if (idev->mc_dad_count) {
2095 idev->mc_dad_count--; 2096 idev->mc_dad_count--;
2096 if (idev->mc_dad_count) 2097 if (idev->mc_dad_count)
2097 mld_dad_start_timer(idev, idev->mc_maxdelay); 2098 mld_dad_start_timer(idev,
2099 unsolicited_report_interval(idev));
2098 } 2100 }
2099 in6_dev_put(idev); 2101 in6_dev_put(idev);
2100} 2102}
@@ -2452,7 +2454,8 @@ static void mld_ifc_timer_expire(struct timer_list *t)
2452 if (idev->mc_ifc_count) { 2454 if (idev->mc_ifc_count) {
2453 idev->mc_ifc_count--; 2455 idev->mc_ifc_count--;
2454 if (idev->mc_ifc_count) 2456 if (idev->mc_ifc_count)
2455 mld_ifc_start_timer(idev, idev->mc_maxdelay); 2457 mld_ifc_start_timer(idev,
2458 unsolicited_report_interval(idev));
2456 } 2459 }
2457 in6_dev_put(idev); 2460 in6_dev_put(idev);
2458} 2461}
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
index ce6f0d15b5dd..afc307c89d1a 100644
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
@@ -1334,7 +1334,7 @@ void raw6_proc_exit(void)
1334} 1334}
1335#endif /* CONFIG_PROC_FS */ 1335#endif /* CONFIG_PROC_FS */
1336 1336
1337/* Same as inet6_dgram_ops, sans udp_poll_mask. */ 1337/* Same as inet6_dgram_ops, sans udp_poll. */
1338const struct proto_ops inet6_sockraw_ops = { 1338const struct proto_ops inet6_sockraw_ops = {
1339 .family = PF_INET6, 1339 .family = PF_INET6,
1340 .owner = THIS_MODULE, 1340 .owner = THIS_MODULE,
@@ -1344,7 +1344,7 @@ const struct proto_ops inet6_sockraw_ops = {
1344 .socketpair = sock_no_socketpair, /* a do nothing */ 1344 .socketpair = sock_no_socketpair, /* a do nothing */
1345 .accept = sock_no_accept, /* a do nothing */ 1345 .accept = sock_no_accept, /* a do nothing */
1346 .getname = inet6_getname, 1346 .getname = inet6_getname,
1347 .poll_mask = datagram_poll_mask, /* ok */ 1347 .poll = datagram_poll, /* ok */
1348 .ioctl = inet6_ioctl, /* must change */ 1348 .ioctl = inet6_ioctl, /* must change */
1349 .listen = sock_no_listen, /* ok */ 1349 .listen = sock_no_listen, /* ok */
1350 .shutdown = inet_shutdown, /* ok */ 1350 .shutdown = inet_shutdown, /* ok */
diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
index 68e86257a549..893a022f9620 100644
--- a/net/iucv/af_iucv.c
+++ b/net/iucv/af_iucv.c
@@ -1488,11 +1488,14 @@ static inline __poll_t iucv_accept_poll(struct sock *parent)
1488 return 0; 1488 return 0;
1489} 1489}
1490 1490
1491static __poll_t iucv_sock_poll_mask(struct socket *sock, __poll_t events) 1491__poll_t iucv_sock_poll(struct file *file, struct socket *sock,
1492 poll_table *wait)
1492{ 1493{
1493 struct sock *sk = sock->sk; 1494 struct sock *sk = sock->sk;
1494 __poll_t mask = 0; 1495 __poll_t mask = 0;
1495 1496
1497 sock_poll_wait(file, sk_sleep(sk), wait);
1498
1496 if (sk->sk_state == IUCV_LISTEN) 1499 if (sk->sk_state == IUCV_LISTEN)
1497 return iucv_accept_poll(sk); 1500 return iucv_accept_poll(sk);
1498 1501
@@ -2385,7 +2388,7 @@ static const struct proto_ops iucv_sock_ops = {
2385 .getname = iucv_sock_getname, 2388 .getname = iucv_sock_getname,
2386 .sendmsg = iucv_sock_sendmsg, 2389 .sendmsg = iucv_sock_sendmsg,
2387 .recvmsg = iucv_sock_recvmsg, 2390 .recvmsg = iucv_sock_recvmsg,
2388 .poll_mask = iucv_sock_poll_mask, 2391 .poll = iucv_sock_poll,
2389 .ioctl = sock_no_ioctl, 2392 .ioctl = sock_no_ioctl,
2390 .mmap = sock_no_mmap, 2393 .mmap = sock_no_mmap,
2391 .socketpair = sock_no_socketpair, 2394 .socketpair = sock_no_socketpair,
diff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c
index 84b7d5c6fec8..d3601d421571 100644
--- a/net/kcm/kcmsock.c
+++ b/net/kcm/kcmsock.c
@@ -1336,9 +1336,9 @@ static void init_kcm_sock(struct kcm_sock *kcm, struct kcm_mux *mux)
1336 struct list_head *head; 1336 struct list_head *head;
1337 int index = 0; 1337 int index = 0;
1338 1338
1339 /* For SOCK_SEQPACKET sock type, datagram_poll_mask checks the sk_state, 1339 /* For SOCK_SEQPACKET sock type, datagram_poll checks the sk_state, so
1340 * so we set sk_state, otherwise epoll_wait always returns right away 1340 * we set sk_state, otherwise epoll_wait always returns right away with
1341 * with EPOLLHUP 1341 * EPOLLHUP
1342 */ 1342 */
1343 kcm->sk.sk_state = TCP_ESTABLISHED; 1343 kcm->sk.sk_state = TCP_ESTABLISHED;
1344 1344
@@ -1903,7 +1903,7 @@ static const struct proto_ops kcm_dgram_ops = {
1903 .socketpair = sock_no_socketpair, 1903 .socketpair = sock_no_socketpair,
1904 .accept = sock_no_accept, 1904 .accept = sock_no_accept,
1905 .getname = sock_no_getname, 1905 .getname = sock_no_getname,
1906 .poll_mask = datagram_poll_mask, 1906 .poll = datagram_poll,
1907 .ioctl = kcm_ioctl, 1907 .ioctl = kcm_ioctl,
1908 .listen = sock_no_listen, 1908 .listen = sock_no_listen,
1909 .shutdown = sock_no_shutdown, 1909 .shutdown = sock_no_shutdown,
@@ -1924,7 +1924,7 @@ static const struct proto_ops kcm_seqpacket_ops = {
1924 .socketpair = sock_no_socketpair, 1924 .socketpair = sock_no_socketpair,
1925 .accept = sock_no_accept, 1925 .accept = sock_no_accept,
1926 .getname = sock_no_getname, 1926 .getname = sock_no_getname,
1927 .poll_mask = datagram_poll_mask, 1927 .poll = datagram_poll,
1928 .ioctl = kcm_ioctl, 1928 .ioctl = kcm_ioctl,
1929 .listen = sock_no_listen, 1929 .listen = sock_no_listen,
1930 .shutdown = sock_no_shutdown, 1930 .shutdown = sock_no_shutdown,
diff --git a/net/key/af_key.c b/net/key/af_key.c
index 8bdc1cbe490a..5e1d2946ffbf 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -3751,7 +3751,7 @@ static const struct proto_ops pfkey_ops = {
3751 3751
3752 /* Now the operations that really occur. */ 3752 /* Now the operations that really occur. */
3753 .release = pfkey_release, 3753 .release = pfkey_release,
3754 .poll_mask = datagram_poll_mask, 3754 .poll = datagram_poll,
3755 .sendmsg = pfkey_sendmsg, 3755 .sendmsg = pfkey_sendmsg,
3756 .recvmsg = pfkey_recvmsg, 3756 .recvmsg = pfkey_recvmsg,
3757}; 3757};
diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c
index 181073bf6925..a9c05b2bc1b0 100644
--- a/net/l2tp/l2tp_ip.c
+++ b/net/l2tp/l2tp_ip.c
@@ -613,7 +613,7 @@ static const struct proto_ops l2tp_ip_ops = {
613 .socketpair = sock_no_socketpair, 613 .socketpair = sock_no_socketpair,
614 .accept = sock_no_accept, 614 .accept = sock_no_accept,
615 .getname = l2tp_ip_getname, 615 .getname = l2tp_ip_getname,
616 .poll_mask = datagram_poll_mask, 616 .poll = datagram_poll,
617 .ioctl = inet_ioctl, 617 .ioctl = inet_ioctl,
618 .listen = sock_no_listen, 618 .listen = sock_no_listen,
619 .shutdown = inet_shutdown, 619 .shutdown = inet_shutdown,
diff --git a/net/l2tp/l2tp_ip6.c b/net/l2tp/l2tp_ip6.c
index 336e4c00abbc..957369192ca1 100644
--- a/net/l2tp/l2tp_ip6.c
+++ b/net/l2tp/l2tp_ip6.c
@@ -754,7 +754,7 @@ static const struct proto_ops l2tp_ip6_ops = {
754 .socketpair = sock_no_socketpair, 754 .socketpair = sock_no_socketpair,
755 .accept = sock_no_accept, 755 .accept = sock_no_accept,
756 .getname = l2tp_ip6_getname, 756 .getname = l2tp_ip6_getname,
757 .poll_mask = datagram_poll_mask, 757 .poll = datagram_poll,
758 .ioctl = inet6_ioctl, 758 .ioctl = inet6_ioctl,
759 .listen = sock_no_listen, 759 .listen = sock_no_listen,
760 .shutdown = inet_shutdown, 760 .shutdown = inet_shutdown,
diff --git a/net/l2tp/l2tp_ppp.c b/net/l2tp/l2tp_ppp.c
index 55188382845c..e398797878a9 100644
--- a/net/l2tp/l2tp_ppp.c
+++ b/net/l2tp/l2tp_ppp.c
@@ -1818,7 +1818,7 @@ static const struct proto_ops pppol2tp_ops = {
1818 .socketpair = sock_no_socketpair, 1818 .socketpair = sock_no_socketpair,
1819 .accept = sock_no_accept, 1819 .accept = sock_no_accept,
1820 .getname = pppol2tp_getname, 1820 .getname = pppol2tp_getname,
1821 .poll_mask = datagram_poll_mask, 1821 .poll = datagram_poll,
1822 .listen = sock_no_listen, 1822 .listen = sock_no_listen,
1823 .shutdown = sock_no_shutdown, 1823 .shutdown = sock_no_shutdown,
1824 .setsockopt = pppol2tp_setsockopt, 1824 .setsockopt = pppol2tp_setsockopt,
diff --git a/net/llc/af_llc.c b/net/llc/af_llc.c
index 804de8490186..1beeea9549fa 100644
--- a/net/llc/af_llc.c
+++ b/net/llc/af_llc.c
@@ -1192,7 +1192,7 @@ static const struct proto_ops llc_ui_ops = {
1192 .socketpair = sock_no_socketpair, 1192 .socketpair = sock_no_socketpair,
1193 .accept = llc_ui_accept, 1193 .accept = llc_ui_accept,
1194 .getname = llc_ui_getname, 1194 .getname = llc_ui_getname,
1195 .poll_mask = datagram_poll_mask, 1195 .poll = datagram_poll,
1196 .ioctl = llc_ui_ioctl, 1196 .ioctl = llc_ui_ioctl,
1197 .listen = llc_ui_listen, 1197 .listen = llc_ui_listen,
1198 .shutdown = llc_ui_shutdown, 1198 .shutdown = llc_ui_shutdown,
diff --git a/net/ncsi/ncsi-aen.c b/net/ncsi/ncsi-aen.c
index e7b05de1e6d1..25e483e8278b 100644
--- a/net/ncsi/ncsi-aen.c
+++ b/net/ncsi/ncsi-aen.c
@@ -73,8 +73,8 @@ static int ncsi_aen_handler_lsc(struct ncsi_dev_priv *ndp,
73 ncm->data[2] = data; 73 ncm->data[2] = data;
74 ncm->data[4] = ntohl(lsc->oem_status); 74 ncm->data[4] = ntohl(lsc->oem_status);
75 75
76 netdev_info(ndp->ndev.dev, "NCSI: LSC AEN - channel %u state %s\n", 76 netdev_dbg(ndp->ndev.dev, "NCSI: LSC AEN - channel %u state %s\n",
77 nc->id, data & 0x1 ? "up" : "down"); 77 nc->id, data & 0x1 ? "up" : "down");
78 78
79 chained = !list_empty(&nc->link); 79 chained = !list_empty(&nc->link);
80 state = nc->state; 80 state = nc->state;
@@ -148,9 +148,9 @@ static int ncsi_aen_handler_hncdsc(struct ncsi_dev_priv *ndp,
148 hncdsc = (struct ncsi_aen_hncdsc_pkt *)h; 148 hncdsc = (struct ncsi_aen_hncdsc_pkt *)h;
149 ncm->data[3] = ntohl(hncdsc->status); 149 ncm->data[3] = ntohl(hncdsc->status);
150 spin_unlock_irqrestore(&nc->lock, flags); 150 spin_unlock_irqrestore(&nc->lock, flags);
151 netdev_printk(KERN_DEBUG, ndp->ndev.dev, 151 netdev_dbg(ndp->ndev.dev,
152 "NCSI: host driver %srunning on channel %u\n", 152 "NCSI: host driver %srunning on channel %u\n",
153 ncm->data[3] & 0x1 ? "" : "not ", nc->id); 153 ncm->data[3] & 0x1 ? "" : "not ", nc->id);
154 154
155 return 0; 155 return 0;
156} 156}
diff --git a/net/ncsi/ncsi-manage.c b/net/ncsi/ncsi-manage.c
index 5561e221b71f..091284760d21 100644
--- a/net/ncsi/ncsi-manage.c
+++ b/net/ncsi/ncsi-manage.c
@@ -788,8 +788,8 @@ static void ncsi_configure_channel(struct ncsi_dev_priv *ndp)
788 } 788 }
789 break; 789 break;
790 case ncsi_dev_state_config_done: 790 case ncsi_dev_state_config_done:
791 netdev_printk(KERN_DEBUG, ndp->ndev.dev, 791 netdev_dbg(ndp->ndev.dev, "NCSI: channel %u config done\n",
792 "NCSI: channel %u config done\n", nc->id); 792 nc->id);
793 spin_lock_irqsave(&nc->lock, flags); 793 spin_lock_irqsave(&nc->lock, flags);
794 if (nc->reconfigure_needed) { 794 if (nc->reconfigure_needed) {
795 /* This channel's configuration has been updated 795 /* This channel's configuration has been updated
@@ -804,8 +804,7 @@ static void ncsi_configure_channel(struct ncsi_dev_priv *ndp)
804 list_add_tail_rcu(&nc->link, &ndp->channel_queue); 804 list_add_tail_rcu(&nc->link, &ndp->channel_queue);
805 spin_unlock_irqrestore(&ndp->lock, flags); 805 spin_unlock_irqrestore(&ndp->lock, flags);
806 806
807 netdev_printk(KERN_DEBUG, dev, 807 netdev_dbg(dev, "Dirty NCSI channel state reset\n");
808 "Dirty NCSI channel state reset\n");
809 ncsi_process_next_channel(ndp); 808 ncsi_process_next_channel(ndp);
810 break; 809 break;
811 } 810 }
@@ -816,9 +815,9 @@ static void ncsi_configure_channel(struct ncsi_dev_priv *ndp)
816 } else { 815 } else {
817 hot_nc = NULL; 816 hot_nc = NULL;
818 nc->state = NCSI_CHANNEL_INACTIVE; 817 nc->state = NCSI_CHANNEL_INACTIVE;
819 netdev_warn(ndp->ndev.dev, 818 netdev_dbg(ndp->ndev.dev,
820 "NCSI: channel %u link down after config\n", 819 "NCSI: channel %u link down after config\n",
821 nc->id); 820 nc->id);
822 } 821 }
823 spin_unlock_irqrestore(&nc->lock, flags); 822 spin_unlock_irqrestore(&nc->lock, flags);
824 823
@@ -908,9 +907,9 @@ static int ncsi_choose_active_channel(struct ncsi_dev_priv *ndp)
908 } 907 }
909 908
910 ncm = &found->modes[NCSI_MODE_LINK]; 909 ncm = &found->modes[NCSI_MODE_LINK];
911 netdev_printk(KERN_DEBUG, ndp->ndev.dev, 910 netdev_dbg(ndp->ndev.dev,
912 "NCSI: Channel %u added to queue (link %s)\n", 911 "NCSI: Channel %u added to queue (link %s)\n",
913 found->id, ncm->data[2] & 0x1 ? "up" : "down"); 912 found->id, ncm->data[2] & 0x1 ? "up" : "down");
914 913
915out: 914out:
916 spin_lock_irqsave(&ndp->lock, flags); 915 spin_lock_irqsave(&ndp->lock, flags);
@@ -1199,14 +1198,14 @@ int ncsi_process_next_channel(struct ncsi_dev_priv *ndp)
1199 switch (old_state) { 1198 switch (old_state) {
1200 case NCSI_CHANNEL_INACTIVE: 1199 case NCSI_CHANNEL_INACTIVE:
1201 ndp->ndev.state = ncsi_dev_state_config; 1200 ndp->ndev.state = ncsi_dev_state_config;
1202 netdev_info(ndp->ndev.dev, "NCSI: configuring channel %u\n", 1201 netdev_dbg(ndp->ndev.dev, "NCSI: configuring channel %u\n",
1203 nc->id); 1202 nc->id);
1204 ncsi_configure_channel(ndp); 1203 ncsi_configure_channel(ndp);
1205 break; 1204 break;
1206 case NCSI_CHANNEL_ACTIVE: 1205 case NCSI_CHANNEL_ACTIVE:
1207 ndp->ndev.state = ncsi_dev_state_suspend; 1206 ndp->ndev.state = ncsi_dev_state_suspend;
1208 netdev_info(ndp->ndev.dev, "NCSI: suspending channel %u\n", 1207 netdev_dbg(ndp->ndev.dev, "NCSI: suspending channel %u\n",
1209 nc->id); 1208 nc->id);
1210 ncsi_suspend_channel(ndp); 1209 ncsi_suspend_channel(ndp);
1211 break; 1210 break;
1212 default: 1211 default:
@@ -1226,8 +1225,6 @@ out:
1226 return ncsi_choose_active_channel(ndp); 1225 return ncsi_choose_active_channel(ndp);
1227 } 1226 }
1228 1227
1229 netdev_printk(KERN_DEBUG, ndp->ndev.dev,
1230 "NCSI: No more channels to process\n");
1231 ncsi_report_link(ndp, false); 1228 ncsi_report_link(ndp, false);
1232 return -ENODEV; 1229 return -ENODEV;
1233} 1230}
@@ -1318,9 +1315,9 @@ static int ncsi_kick_channels(struct ncsi_dev_priv *ndp)
1318 if ((ndp->ndev.state & 0xff00) == 1315 if ((ndp->ndev.state & 0xff00) ==
1319 ncsi_dev_state_config || 1316 ncsi_dev_state_config ||
1320 !list_empty(&nc->link)) { 1317 !list_empty(&nc->link)) {
1321 netdev_printk(KERN_DEBUG, nd->dev, 1318 netdev_dbg(nd->dev,
1322 "NCSI: channel %p marked dirty\n", 1319 "NCSI: channel %p marked dirty\n",
1323 nc); 1320 nc);
1324 nc->reconfigure_needed = true; 1321 nc->reconfigure_needed = true;
1325 } 1322 }
1326 spin_unlock_irqrestore(&nc->lock, flags); 1323 spin_unlock_irqrestore(&nc->lock, flags);
@@ -1338,8 +1335,7 @@ static int ncsi_kick_channels(struct ncsi_dev_priv *ndp)
1338 list_add_tail_rcu(&nc->link, &ndp->channel_queue); 1335 list_add_tail_rcu(&nc->link, &ndp->channel_queue);
1339 spin_unlock_irqrestore(&ndp->lock, flags); 1336 spin_unlock_irqrestore(&ndp->lock, flags);
1340 1337
1341 netdev_printk(KERN_DEBUG, nd->dev, 1338 netdev_dbg(nd->dev, "NCSI: kicked channel %p\n", nc);
1342 "NCSI: kicked channel %p\n", nc);
1343 n++; 1339 n++;
1344 } 1340 }
1345 } 1341 }
@@ -1370,8 +1366,8 @@ int ncsi_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid)
1370 list_for_each_entry_rcu(vlan, &ndp->vlan_vids, list) { 1366 list_for_each_entry_rcu(vlan, &ndp->vlan_vids, list) {
1371 n_vids++; 1367 n_vids++;
1372 if (vlan->vid == vid) { 1368 if (vlan->vid == vid) {
1373 netdev_printk(KERN_DEBUG, dev, 1369 netdev_dbg(dev, "NCSI: vid %u already registered\n",
1374 "NCSI: vid %u already registered\n", vid); 1370 vid);
1375 return 0; 1371 return 0;
1376 } 1372 }
1377 } 1373 }
@@ -1390,7 +1386,7 @@ int ncsi_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid)
1390 vlan->vid = vid; 1386 vlan->vid = vid;
1391 list_add_rcu(&vlan->list, &ndp->vlan_vids); 1387 list_add_rcu(&vlan->list, &ndp->vlan_vids);
1392 1388
1393 netdev_printk(KERN_DEBUG, dev, "NCSI: Added new vid %u\n", vid); 1389 netdev_dbg(dev, "NCSI: Added new vid %u\n", vid);
1394 1390
1395 found = ncsi_kick_channels(ndp) != 0; 1391 found = ncsi_kick_channels(ndp) != 0;
1396 1392
@@ -1419,8 +1415,7 @@ int ncsi_vlan_rx_kill_vid(struct net_device *dev, __be16 proto, u16 vid)
1419 /* Remove the VLAN id from our internal list */ 1415 /* Remove the VLAN id from our internal list */
1420 list_for_each_entry_safe(vlan, tmp, &ndp->vlan_vids, list) 1416 list_for_each_entry_safe(vlan, tmp, &ndp->vlan_vids, list)
1421 if (vlan->vid == vid) { 1417 if (vlan->vid == vid) {
1422 netdev_printk(KERN_DEBUG, dev, 1418 netdev_dbg(dev, "NCSI: vid %u found, removing\n", vid);
1423 "NCSI: vid %u found, removing\n", vid);
1424 list_del_rcu(&vlan->list); 1419 list_del_rcu(&vlan->list);
1425 found = true; 1420 found = true;
1426 kfree(vlan); 1421 kfree(vlan);
@@ -1547,7 +1542,7 @@ void ncsi_stop_dev(struct ncsi_dev *nd)
1547 } 1542 }
1548 } 1543 }
1549 1544
1550 netdev_printk(KERN_DEBUG, ndp->ndev.dev, "NCSI: Stopping device\n"); 1545 netdev_dbg(ndp->ndev.dev, "NCSI: Stopping device\n");
1551 ncsi_report_link(ndp, true); 1546 ncsi_report_link(ndp, true);
1552} 1547}
1553EXPORT_SYMBOL_GPL(ncsi_stop_dev); 1548EXPORT_SYMBOL_GPL(ncsi_stop_dev);
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index 1189b84413d5..393573a99a5a 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -2658,7 +2658,7 @@ static const struct proto_ops netlink_ops = {
2658 .socketpair = sock_no_socketpair, 2658 .socketpair = sock_no_socketpair,
2659 .accept = sock_no_accept, 2659 .accept = sock_no_accept,
2660 .getname = netlink_getname, 2660 .getname = netlink_getname,
2661 .poll_mask = datagram_poll_mask, 2661 .poll = datagram_poll,
2662 .ioctl = netlink_ioctl, 2662 .ioctl = netlink_ioctl,
2663 .listen = sock_no_listen, 2663 .listen = sock_no_listen,
2664 .shutdown = sock_no_shutdown, 2664 .shutdown = sock_no_shutdown,
diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c
index 93fbcafbf388..03f37c4e64fe 100644
--- a/net/netrom/af_netrom.c
+++ b/net/netrom/af_netrom.c
@@ -1355,7 +1355,7 @@ static const struct proto_ops nr_proto_ops = {
1355 .socketpair = sock_no_socketpair, 1355 .socketpair = sock_no_socketpair,
1356 .accept = nr_accept, 1356 .accept = nr_accept,
1357 .getname = nr_getname, 1357 .getname = nr_getname,
1358 .poll_mask = datagram_poll_mask, 1358 .poll = datagram_poll,
1359 .ioctl = nr_ioctl, 1359 .ioctl = nr_ioctl,
1360 .listen = nr_listen, 1360 .listen = nr_listen,
1361 .shutdown = sock_no_shutdown, 1361 .shutdown = sock_no_shutdown,
diff --git a/net/nfc/llcp_sock.c b/net/nfc/llcp_sock.c
index ab5bb14b49af..ea0c0c6f1874 100644
--- a/net/nfc/llcp_sock.c
+++ b/net/nfc/llcp_sock.c
@@ -548,13 +548,16 @@ static inline __poll_t llcp_accept_poll(struct sock *parent)
548 return 0; 548 return 0;
549} 549}
550 550
551static __poll_t llcp_sock_poll_mask(struct socket *sock, __poll_t events) 551static __poll_t llcp_sock_poll(struct file *file, struct socket *sock,
552 poll_table *wait)
552{ 553{
553 struct sock *sk = sock->sk; 554 struct sock *sk = sock->sk;
554 __poll_t mask = 0; 555 __poll_t mask = 0;
555 556
556 pr_debug("%p\n", sk); 557 pr_debug("%p\n", sk);
557 558
559 sock_poll_wait(file, sk_sleep(sk), wait);
560
558 if (sk->sk_state == LLCP_LISTEN) 561 if (sk->sk_state == LLCP_LISTEN)
559 return llcp_accept_poll(sk); 562 return llcp_accept_poll(sk);
560 563
@@ -896,7 +899,7 @@ static const struct proto_ops llcp_sock_ops = {
896 .socketpair = sock_no_socketpair, 899 .socketpair = sock_no_socketpair,
897 .accept = llcp_sock_accept, 900 .accept = llcp_sock_accept,
898 .getname = llcp_sock_getname, 901 .getname = llcp_sock_getname,
899 .poll_mask = llcp_sock_poll_mask, 902 .poll = llcp_sock_poll,
900 .ioctl = sock_no_ioctl, 903 .ioctl = sock_no_ioctl,
901 .listen = llcp_sock_listen, 904 .listen = llcp_sock_listen,
902 .shutdown = sock_no_shutdown, 905 .shutdown = sock_no_shutdown,
@@ -916,7 +919,7 @@ static const struct proto_ops llcp_rawsock_ops = {
916 .socketpair = sock_no_socketpair, 919 .socketpair = sock_no_socketpair,
917 .accept = sock_no_accept, 920 .accept = sock_no_accept,
918 .getname = llcp_sock_getname, 921 .getname = llcp_sock_getname,
919 .poll_mask = llcp_sock_poll_mask, 922 .poll = llcp_sock_poll,
920 .ioctl = sock_no_ioctl, 923 .ioctl = sock_no_ioctl,
921 .listen = sock_no_listen, 924 .listen = sock_no_listen,
922 .shutdown = sock_no_shutdown, 925 .shutdown = sock_no_shutdown,
diff --git a/net/nfc/rawsock.c b/net/nfc/rawsock.c
index 60c322531c49..e2188deb08dc 100644
--- a/net/nfc/rawsock.c
+++ b/net/nfc/rawsock.c
@@ -284,7 +284,7 @@ static const struct proto_ops rawsock_ops = {
284 .socketpair = sock_no_socketpair, 284 .socketpair = sock_no_socketpair,
285 .accept = sock_no_accept, 285 .accept = sock_no_accept,
286 .getname = sock_no_getname, 286 .getname = sock_no_getname,
287 .poll_mask = datagram_poll_mask, 287 .poll = datagram_poll,
288 .ioctl = sock_no_ioctl, 288 .ioctl = sock_no_ioctl,
289 .listen = sock_no_listen, 289 .listen = sock_no_listen,
290 .shutdown = sock_no_shutdown, 290 .shutdown = sock_no_shutdown,
@@ -304,7 +304,7 @@ static const struct proto_ops rawsock_raw_ops = {
304 .socketpair = sock_no_socketpair, 304 .socketpair = sock_no_socketpair,
305 .accept = sock_no_accept, 305 .accept = sock_no_accept,
306 .getname = sock_no_getname, 306 .getname = sock_no_getname,
307 .poll_mask = datagram_poll_mask, 307 .poll = datagram_poll,
308 .ioctl = sock_no_ioctl, 308 .ioctl = sock_no_ioctl,
309 .listen = sock_no_listen, 309 .listen = sock_no_listen,
310 .shutdown = sock_no_shutdown, 310 .shutdown = sock_no_shutdown,
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index 50809748c127..57634bc3da74 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -2262,6 +2262,13 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev,
2262 if (po->stats.stats1.tp_drops) 2262 if (po->stats.stats1.tp_drops)
2263 status |= TP_STATUS_LOSING; 2263 status |= TP_STATUS_LOSING;
2264 } 2264 }
2265
2266 if (do_vnet &&
2267 virtio_net_hdr_from_skb(skb, h.raw + macoff -
2268 sizeof(struct virtio_net_hdr),
2269 vio_le(), true, 0))
2270 goto drop_n_account;
2271
2265 po->stats.stats1.tp_packets++; 2272 po->stats.stats1.tp_packets++;
2266 if (copy_skb) { 2273 if (copy_skb) {
2267 status |= TP_STATUS_COPY; 2274 status |= TP_STATUS_COPY;
@@ -2269,15 +2276,6 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev,
2269 } 2276 }
2270 spin_unlock(&sk->sk_receive_queue.lock); 2277 spin_unlock(&sk->sk_receive_queue.lock);
2271 2278
2272 if (do_vnet) {
2273 if (virtio_net_hdr_from_skb(skb, h.raw + macoff -
2274 sizeof(struct virtio_net_hdr),
2275 vio_le(), true, 0)) {
2276 spin_lock(&sk->sk_receive_queue.lock);
2277 goto drop_n_account;
2278 }
2279 }
2280
2281 skb_copy_bits(skb, 0, h.raw + macoff, snaplen); 2279 skb_copy_bits(skb, 0, h.raw + macoff, snaplen);
2282 2280
2283 if (!(ts_status = tpacket_get_timestamp(skb, &ts, po->tp_tstamp))) 2281 if (!(ts_status = tpacket_get_timestamp(skb, &ts, po->tp_tstamp)))
@@ -4078,11 +4076,12 @@ static int packet_ioctl(struct socket *sock, unsigned int cmd,
4078 return 0; 4076 return 0;
4079} 4077}
4080 4078
4081static __poll_t packet_poll_mask(struct socket *sock, __poll_t events) 4079static __poll_t packet_poll(struct file *file, struct socket *sock,
4080 poll_table *wait)
4082{ 4081{
4083 struct sock *sk = sock->sk; 4082 struct sock *sk = sock->sk;
4084 struct packet_sock *po = pkt_sk(sk); 4083 struct packet_sock *po = pkt_sk(sk);
4085 __poll_t mask = datagram_poll_mask(sock, events); 4084 __poll_t mask = datagram_poll(file, sock, wait);
4086 4085
4087 spin_lock_bh(&sk->sk_receive_queue.lock); 4086 spin_lock_bh(&sk->sk_receive_queue.lock);
4088 if (po->rx_ring.pg_vec) { 4087 if (po->rx_ring.pg_vec) {
@@ -4424,7 +4423,7 @@ static const struct proto_ops packet_ops_spkt = {
4424 .socketpair = sock_no_socketpair, 4423 .socketpair = sock_no_socketpair,
4425 .accept = sock_no_accept, 4424 .accept = sock_no_accept,
4426 .getname = packet_getname_spkt, 4425 .getname = packet_getname_spkt,
4427 .poll_mask = datagram_poll_mask, 4426 .poll = datagram_poll,
4428 .ioctl = packet_ioctl, 4427 .ioctl = packet_ioctl,
4429 .listen = sock_no_listen, 4428 .listen = sock_no_listen,
4430 .shutdown = sock_no_shutdown, 4429 .shutdown = sock_no_shutdown,
@@ -4445,7 +4444,7 @@ static const struct proto_ops packet_ops = {
4445 .socketpair = sock_no_socketpair, 4444 .socketpair = sock_no_socketpair,
4446 .accept = sock_no_accept, 4445 .accept = sock_no_accept,
4447 .getname = packet_getname, 4446 .getname = packet_getname,
4448 .poll_mask = packet_poll_mask, 4447 .poll = packet_poll,
4449 .ioctl = packet_ioctl, 4448 .ioctl = packet_ioctl,
4450 .listen = sock_no_listen, 4449 .listen = sock_no_listen,
4451 .shutdown = sock_no_shutdown, 4450 .shutdown = sock_no_shutdown,
diff --git a/net/phonet/socket.c b/net/phonet/socket.c
index c295c4e20f01..30187990257f 100644
--- a/net/phonet/socket.c
+++ b/net/phonet/socket.c
@@ -340,12 +340,15 @@ static int pn_socket_getname(struct socket *sock, struct sockaddr *addr,
340 return sizeof(struct sockaddr_pn); 340 return sizeof(struct sockaddr_pn);
341} 341}
342 342
343static __poll_t pn_socket_poll_mask(struct socket *sock, __poll_t events) 343static __poll_t pn_socket_poll(struct file *file, struct socket *sock,
344 poll_table *wait)
344{ 345{
345 struct sock *sk = sock->sk; 346 struct sock *sk = sock->sk;
346 struct pep_sock *pn = pep_sk(sk); 347 struct pep_sock *pn = pep_sk(sk);
347 __poll_t mask = 0; 348 __poll_t mask = 0;
348 349
350 poll_wait(file, sk_sleep(sk), wait);
351
349 if (sk->sk_state == TCP_CLOSE) 352 if (sk->sk_state == TCP_CLOSE)
350 return EPOLLERR; 353 return EPOLLERR;
351 if (!skb_queue_empty(&sk->sk_receive_queue)) 354 if (!skb_queue_empty(&sk->sk_receive_queue))
@@ -445,7 +448,7 @@ const struct proto_ops phonet_dgram_ops = {
445 .socketpair = sock_no_socketpair, 448 .socketpair = sock_no_socketpair,
446 .accept = sock_no_accept, 449 .accept = sock_no_accept,
447 .getname = pn_socket_getname, 450 .getname = pn_socket_getname,
448 .poll_mask = datagram_poll_mask, 451 .poll = datagram_poll,
449 .ioctl = pn_socket_ioctl, 452 .ioctl = pn_socket_ioctl,
450 .listen = sock_no_listen, 453 .listen = sock_no_listen,
451 .shutdown = sock_no_shutdown, 454 .shutdown = sock_no_shutdown,
@@ -470,7 +473,7 @@ const struct proto_ops phonet_stream_ops = {
470 .socketpair = sock_no_socketpair, 473 .socketpair = sock_no_socketpair,
471 .accept = pn_socket_accept, 474 .accept = pn_socket_accept,
472 .getname = pn_socket_getname, 475 .getname = pn_socket_getname,
473 .poll_mask = pn_socket_poll_mask, 476 .poll = pn_socket_poll,
474 .ioctl = pn_socket_ioctl, 477 .ioctl = pn_socket_ioctl,
475 .listen = pn_socket_listen, 478 .listen = pn_socket_listen,
476 .shutdown = sock_no_shutdown, 479 .shutdown = sock_no_shutdown,
diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c
index 1b5025ea5b04..2aa07b547b16 100644
--- a/net/qrtr/qrtr.c
+++ b/net/qrtr/qrtr.c
@@ -1023,7 +1023,7 @@ static const struct proto_ops qrtr_proto_ops = {
1023 .recvmsg = qrtr_recvmsg, 1023 .recvmsg = qrtr_recvmsg,
1024 .getname = qrtr_getname, 1024 .getname = qrtr_getname,
1025 .ioctl = qrtr_ioctl, 1025 .ioctl = qrtr_ioctl,
1026 .poll_mask = datagram_poll_mask, 1026 .poll = datagram_poll,
1027 .shutdown = sock_no_shutdown, 1027 .shutdown = sock_no_shutdown,
1028 .setsockopt = sock_no_setsockopt, 1028 .setsockopt = sock_no_setsockopt,
1029 .getsockopt = sock_no_getsockopt, 1029 .getsockopt = sock_no_getsockopt,
diff --git a/net/rose/af_rose.c b/net/rose/af_rose.c
index ebe42e7eb456..d00a0ef39a56 100644
--- a/net/rose/af_rose.c
+++ b/net/rose/af_rose.c
@@ -1470,7 +1470,7 @@ static const struct proto_ops rose_proto_ops = {
1470 .socketpair = sock_no_socketpair, 1470 .socketpair = sock_no_socketpair,
1471 .accept = rose_accept, 1471 .accept = rose_accept,
1472 .getname = rose_getname, 1472 .getname = rose_getname,
1473 .poll_mask = datagram_poll_mask, 1473 .poll = datagram_poll,
1474 .ioctl = rose_ioctl, 1474 .ioctl = rose_ioctl,
1475 .listen = rose_listen, 1475 .listen = rose_listen,
1476 .shutdown = sock_no_shutdown, 1476 .shutdown = sock_no_shutdown,
diff --git a/net/rxrpc/af_rxrpc.c b/net/rxrpc/af_rxrpc.c
index 3b1ac93efee2..2b463047dd7b 100644
--- a/net/rxrpc/af_rxrpc.c
+++ b/net/rxrpc/af_rxrpc.c
@@ -734,11 +734,15 @@ static int rxrpc_getsockopt(struct socket *sock, int level, int optname,
734/* 734/*
735 * permit an RxRPC socket to be polled 735 * permit an RxRPC socket to be polled
736 */ 736 */
737static __poll_t rxrpc_poll_mask(struct socket *sock, __poll_t events) 737static __poll_t rxrpc_poll(struct file *file, struct socket *sock,
738 poll_table *wait)
738{ 739{
739 struct sock *sk = sock->sk; 740 struct sock *sk = sock->sk;
740 struct rxrpc_sock *rx = rxrpc_sk(sk); 741 struct rxrpc_sock *rx = rxrpc_sk(sk);
741 __poll_t mask = 0; 742 __poll_t mask;
743
744 sock_poll_wait(file, sk_sleep(sk), wait);
745 mask = 0;
742 746
743 /* the socket is readable if there are any messages waiting on the Rx 747 /* the socket is readable if there are any messages waiting on the Rx
744 * queue */ 748 * queue */
@@ -945,7 +949,7 @@ static const struct proto_ops rxrpc_rpc_ops = {
945 .socketpair = sock_no_socketpair, 949 .socketpair = sock_no_socketpair,
946 .accept = sock_no_accept, 950 .accept = sock_no_accept,
947 .getname = sock_no_getname, 951 .getname = sock_no_getname,
948 .poll_mask = rxrpc_poll_mask, 952 .poll = rxrpc_poll,
949 .ioctl = sock_no_ioctl, 953 .ioctl = sock_no_ioctl,
950 .listen = rxrpc_listen, 954 .listen = rxrpc_listen,
951 .shutdown = rxrpc_shutdown, 955 .shutdown = rxrpc_shutdown,
diff --git a/net/sched/act_ife.c b/net/sched/act_ife.c
index 8527cfdc446d..20d7d36b2fc9 100644
--- a/net/sched/act_ife.c
+++ b/net/sched/act_ife.c
@@ -415,7 +415,8 @@ static void tcf_ife_cleanup(struct tc_action *a)
415 spin_unlock_bh(&ife->tcf_lock); 415 spin_unlock_bh(&ife->tcf_lock);
416 416
417 p = rcu_dereference_protected(ife->params, 1); 417 p = rcu_dereference_protected(ife->params, 1);
418 kfree_rcu(p, rcu); 418 if (p)
419 kfree_rcu(p, rcu);
419} 420}
420 421
421/* under ife->tcf_lock for existing action */ 422/* under ife->tcf_lock for existing action */
@@ -516,8 +517,6 @@ static int tcf_ife_init(struct net *net, struct nlattr *nla,
516 saddr = nla_data(tb[TCA_IFE_SMAC]); 517 saddr = nla_data(tb[TCA_IFE_SMAC]);
517 } 518 }
518 519
519 ife->tcf_action = parm->action;
520
521 if (parm->flags & IFE_ENCODE) { 520 if (parm->flags & IFE_ENCODE) {
522 if (daddr) 521 if (daddr)
523 ether_addr_copy(p->eth_dst, daddr); 522 ether_addr_copy(p->eth_dst, daddr);
@@ -543,10 +542,8 @@ static int tcf_ife_init(struct net *net, struct nlattr *nla,
543 NULL, NULL); 542 NULL, NULL);
544 if (err) { 543 if (err) {
545metadata_parse_err: 544metadata_parse_err:
546 if (exists)
547 tcf_idr_release(*a, bind);
548 if (ret == ACT_P_CREATED) 545 if (ret == ACT_P_CREATED)
549 _tcf_ife_cleanup(*a); 546 tcf_idr_release(*a, bind);
550 547
551 if (exists) 548 if (exists)
552 spin_unlock_bh(&ife->tcf_lock); 549 spin_unlock_bh(&ife->tcf_lock);
@@ -567,7 +564,7 @@ metadata_parse_err:
567 err = use_all_metadata(ife); 564 err = use_all_metadata(ife);
568 if (err) { 565 if (err) {
569 if (ret == ACT_P_CREATED) 566 if (ret == ACT_P_CREATED)
570 _tcf_ife_cleanup(*a); 567 tcf_idr_release(*a, bind);
571 568
572 if (exists) 569 if (exists)
573 spin_unlock_bh(&ife->tcf_lock); 570 spin_unlock_bh(&ife->tcf_lock);
@@ -576,6 +573,7 @@ metadata_parse_err:
576 } 573 }
577 } 574 }
578 575
576 ife->tcf_action = parm->action;
579 if (exists) 577 if (exists)
580 spin_unlock_bh(&ife->tcf_lock); 578 spin_unlock_bh(&ife->tcf_lock);
581 579
diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c
index 2b5be42a9f1c..9e8b26a80fb3 100644
--- a/net/sched/cls_flower.c
+++ b/net/sched/cls_flower.c
@@ -66,7 +66,7 @@ struct fl_flow_mask {
66 struct rhashtable_params filter_ht_params; 66 struct rhashtable_params filter_ht_params;
67 struct flow_dissector dissector; 67 struct flow_dissector dissector;
68 struct list_head filters; 68 struct list_head filters;
69 struct rcu_head rcu; 69 struct rcu_work rwork;
70 struct list_head list; 70 struct list_head list;
71}; 71};
72 72
@@ -203,6 +203,20 @@ static int fl_init(struct tcf_proto *tp)
203 return rhashtable_init(&head->ht, &mask_ht_params); 203 return rhashtable_init(&head->ht, &mask_ht_params);
204} 204}
205 205
206static void fl_mask_free(struct fl_flow_mask *mask)
207{
208 rhashtable_destroy(&mask->ht);
209 kfree(mask);
210}
211
212static void fl_mask_free_work(struct work_struct *work)
213{
214 struct fl_flow_mask *mask = container_of(to_rcu_work(work),
215 struct fl_flow_mask, rwork);
216
217 fl_mask_free(mask);
218}
219
206static bool fl_mask_put(struct cls_fl_head *head, struct fl_flow_mask *mask, 220static bool fl_mask_put(struct cls_fl_head *head, struct fl_flow_mask *mask,
207 bool async) 221 bool async)
208{ 222{
@@ -210,12 +224,11 @@ static bool fl_mask_put(struct cls_fl_head *head, struct fl_flow_mask *mask,
210 return false; 224 return false;
211 225
212 rhashtable_remove_fast(&head->ht, &mask->ht_node, mask_ht_params); 226 rhashtable_remove_fast(&head->ht, &mask->ht_node, mask_ht_params);
213 rhashtable_destroy(&mask->ht);
214 list_del_rcu(&mask->list); 227 list_del_rcu(&mask->list);
215 if (async) 228 if (async)
216 kfree_rcu(mask, rcu); 229 tcf_queue_work(&mask->rwork, fl_mask_free_work);
217 else 230 else
218 kfree(mask); 231 fl_mask_free(mask);
219 232
220 return true; 233 return true;
221} 234}
diff --git a/net/sched/sch_blackhole.c b/net/sched/sch_blackhole.c
index c98a61e980ba..9c4c2bb547d7 100644
--- a/net/sched/sch_blackhole.c
+++ b/net/sched/sch_blackhole.c
@@ -21,7 +21,7 @@ static int blackhole_enqueue(struct sk_buff *skb, struct Qdisc *sch,
21 struct sk_buff **to_free) 21 struct sk_buff **to_free)
22{ 22{
23 qdisc_drop(skb, sch, to_free); 23 qdisc_drop(skb, sch, to_free);
24 return NET_XMIT_SUCCESS; 24 return NET_XMIT_SUCCESS | __NET_XMIT_BYPASS;
25} 25}
26 26
27static struct sk_buff *blackhole_dequeue(struct Qdisc *sch) 27static struct sk_buff *blackhole_dequeue(struct Qdisc *sch)
diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c
index 3ae9877ea205..3278a76f6861 100644
--- a/net/sched/sch_hfsc.c
+++ b/net/sched/sch_hfsc.c
@@ -1385,8 +1385,8 @@ hfsc_schedule_watchdog(struct Qdisc *sch)
1385 if (next_time == 0 || next_time > q->root.cl_cfmin) 1385 if (next_time == 0 || next_time > q->root.cl_cfmin)
1386 next_time = q->root.cl_cfmin; 1386 next_time = q->root.cl_cfmin;
1387 } 1387 }
1388 WARN_ON(next_time == 0); 1388 if (next_time)
1389 qdisc_watchdog_schedule(&q->watchdog, next_time); 1389 qdisc_watchdog_schedule(&q->watchdog, next_time);
1390} 1390}
1391 1391
1392static int 1392static int
diff --git a/net/sctp/chunk.c b/net/sctp/chunk.c
index 79daa98208c3..bfb9f812e2ef 100644
--- a/net/sctp/chunk.c
+++ b/net/sctp/chunk.c
@@ -237,7 +237,9 @@ struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *asoc,
237 /* Account for a different sized first fragment */ 237 /* Account for a different sized first fragment */
238 if (msg_len >= first_len) { 238 if (msg_len >= first_len) {
239 msg->can_delay = 0; 239 msg->can_delay = 0;
240 SCTP_INC_STATS(sock_net(asoc->base.sk), SCTP_MIB_FRAGUSRMSGS); 240 if (msg_len > first_len)
241 SCTP_INC_STATS(sock_net(asoc->base.sk),
242 SCTP_MIB_FRAGUSRMSGS);
241 } else { 243 } else {
242 /* Which may be the only one... */ 244 /* Which may be the only one... */
243 first_len = msg_len; 245 first_len = msg_len;
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
index 7339918a805d..0cd2e764f47f 100644
--- a/net/sctp/ipv6.c
+++ b/net/sctp/ipv6.c
@@ -1010,7 +1010,7 @@ static const struct proto_ops inet6_seqpacket_ops = {
1010 .socketpair = sock_no_socketpair, 1010 .socketpair = sock_no_socketpair,
1011 .accept = inet_accept, 1011 .accept = inet_accept,
1012 .getname = sctp_getname, 1012 .getname = sctp_getname,
1013 .poll_mask = sctp_poll_mask, 1013 .poll = sctp_poll,
1014 .ioctl = inet6_ioctl, 1014 .ioctl = inet6_ioctl,
1015 .listen = sctp_inet_listen, 1015 .listen = sctp_inet_listen,
1016 .shutdown = inet_shutdown, 1016 .shutdown = inet_shutdown,
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
index 5dffbc493008..67f73d3a1356 100644
--- a/net/sctp/protocol.c
+++ b/net/sctp/protocol.c
@@ -1016,7 +1016,7 @@ static const struct proto_ops inet_seqpacket_ops = {
1016 .socketpair = sock_no_socketpair, 1016 .socketpair = sock_no_socketpair,
1017 .accept = inet_accept, 1017 .accept = inet_accept,
1018 .getname = inet_getname, /* Semantics are different. */ 1018 .getname = inet_getname, /* Semantics are different. */
1019 .poll_mask = sctp_poll_mask, 1019 .poll = sctp_poll,
1020 .ioctl = inet_ioctl, 1020 .ioctl = inet_ioctl,
1021 .listen = sctp_inet_listen, 1021 .listen = sctp_inet_listen,
1022 .shutdown = inet_shutdown, /* Looks harmless. */ 1022 .shutdown = inet_shutdown, /* Looks harmless. */
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index d20f7addee19..ce620e878538 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -7717,12 +7717,14 @@ out:
7717 * here, again, by modeling the current TCP/UDP code. We don't have 7717 * here, again, by modeling the current TCP/UDP code. We don't have
7718 * a good way to test with it yet. 7718 * a good way to test with it yet.
7719 */ 7719 */
7720__poll_t sctp_poll_mask(struct socket *sock, __poll_t events) 7720__poll_t sctp_poll(struct file *file, struct socket *sock, poll_table *wait)
7721{ 7721{
7722 struct sock *sk = sock->sk; 7722 struct sock *sk = sock->sk;
7723 struct sctp_sock *sp = sctp_sk(sk); 7723 struct sctp_sock *sp = sctp_sk(sk);
7724 __poll_t mask; 7724 __poll_t mask;
7725 7725
7726 poll_wait(file, sk_sleep(sk), wait);
7727
7726 sock_rps_record_flow(sk); 7728 sock_rps_record_flow(sk);
7727 7729
7728 /* A TCP-style listening socket becomes readable when the accept queue 7730 /* A TCP-style listening socket becomes readable when the accept queue
diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c
index da7f02edcd37..973b4471b532 100644
--- a/net/smc/af_smc.c
+++ b/net/smc/af_smc.c
@@ -1273,7 +1273,8 @@ static __poll_t smc_accept_poll(struct sock *parent)
1273 return mask; 1273 return mask;
1274} 1274}
1275 1275
1276static __poll_t smc_poll_mask(struct socket *sock, __poll_t events) 1276static __poll_t smc_poll(struct file *file, struct socket *sock,
1277 poll_table *wait)
1277{ 1278{
1278 struct sock *sk = sock->sk; 1279 struct sock *sk = sock->sk;
1279 __poll_t mask = 0; 1280 __poll_t mask = 0;
@@ -1289,7 +1290,7 @@ static __poll_t smc_poll_mask(struct socket *sock, __poll_t events)
1289 if ((sk->sk_state == SMC_INIT) || smc->use_fallback) { 1290 if ((sk->sk_state == SMC_INIT) || smc->use_fallback) {
1290 /* delegate to CLC child sock */ 1291 /* delegate to CLC child sock */
1291 release_sock(sk); 1292 release_sock(sk);
1292 mask = smc->clcsock->ops->poll_mask(smc->clcsock, events); 1293 mask = smc->clcsock->ops->poll(file, smc->clcsock, wait);
1293 lock_sock(sk); 1294 lock_sock(sk);
1294 sk->sk_err = smc->clcsock->sk->sk_err; 1295 sk->sk_err = smc->clcsock->sk->sk_err;
1295 if (sk->sk_err) { 1296 if (sk->sk_err) {
@@ -1307,6 +1308,11 @@ static __poll_t smc_poll_mask(struct socket *sock, __poll_t events)
1307 } 1308 }
1308 } 1309 }
1309 } else { 1310 } else {
1311 if (sk->sk_state != SMC_CLOSED) {
1312 release_sock(sk);
1313 sock_poll_wait(file, sk_sleep(sk), wait);
1314 lock_sock(sk);
1315 }
1310 if (sk->sk_err) 1316 if (sk->sk_err)
1311 mask |= EPOLLERR; 1317 mask |= EPOLLERR;
1312 if ((sk->sk_shutdown == SHUTDOWN_MASK) || 1318 if ((sk->sk_shutdown == SHUTDOWN_MASK) ||
@@ -1619,7 +1625,7 @@ static const struct proto_ops smc_sock_ops = {
1619 .socketpair = sock_no_socketpair, 1625 .socketpair = sock_no_socketpair,
1620 .accept = smc_accept, 1626 .accept = smc_accept,
1621 .getname = smc_getname, 1627 .getname = smc_getname,
1622 .poll_mask = smc_poll_mask, 1628 .poll = smc_poll,
1623 .ioctl = smc_ioctl, 1629 .ioctl = smc_ioctl,
1624 .listen = smc_listen, 1630 .listen = smc_listen,
1625 .shutdown = smc_shutdown, 1631 .shutdown = smc_shutdown,
diff --git a/net/socket.c b/net/socket.c
index 8a109012608a..85633622c94d 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -117,10 +117,8 @@ static ssize_t sock_write_iter(struct kiocb *iocb, struct iov_iter *from);
117static int sock_mmap(struct file *file, struct vm_area_struct *vma); 117static int sock_mmap(struct file *file, struct vm_area_struct *vma);
118 118
119static int sock_close(struct inode *inode, struct file *file); 119static int sock_close(struct inode *inode, struct file *file);
120static struct wait_queue_head *sock_get_poll_head(struct file *file, 120static __poll_t sock_poll(struct file *file,
121 __poll_t events); 121 struct poll_table_struct *wait);
122static __poll_t sock_poll_mask(struct file *file, __poll_t);
123static __poll_t sock_poll(struct file *file, struct poll_table_struct *wait);
124static long sock_ioctl(struct file *file, unsigned int cmd, unsigned long arg); 122static long sock_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
125#ifdef CONFIG_COMPAT 123#ifdef CONFIG_COMPAT
126static long compat_sock_ioctl(struct file *file, 124static long compat_sock_ioctl(struct file *file,
@@ -143,8 +141,6 @@ static const struct file_operations socket_file_ops = {
143 .llseek = no_llseek, 141 .llseek = no_llseek,
144 .read_iter = sock_read_iter, 142 .read_iter = sock_read_iter,
145 .write_iter = sock_write_iter, 143 .write_iter = sock_write_iter,
146 .get_poll_head = sock_get_poll_head,
147 .poll_mask = sock_poll_mask,
148 .poll = sock_poll, 144 .poll = sock_poll,
149 .unlocked_ioctl = sock_ioctl, 145 .unlocked_ioctl = sock_ioctl,
150#ifdef CONFIG_COMPAT 146#ifdef CONFIG_COMPAT
@@ -1130,48 +1126,16 @@ out_release:
1130} 1126}
1131EXPORT_SYMBOL(sock_create_lite); 1127EXPORT_SYMBOL(sock_create_lite);
1132 1128
1133static struct wait_queue_head *sock_get_poll_head(struct file *file,
1134 __poll_t events)
1135{
1136 struct socket *sock = file->private_data;
1137
1138 if (!sock->ops->poll_mask)
1139 return NULL;
1140 sock_poll_busy_loop(sock, events);
1141 return sk_sleep(sock->sk);
1142}
1143
1144static __poll_t sock_poll_mask(struct file *file, __poll_t events)
1145{
1146 struct socket *sock = file->private_data;
1147
1148 /*
1149 * We need to be sure we are in sync with the socket flags modification.
1150 *
1151 * This memory barrier is paired in the wq_has_sleeper.
1152 */
1153 smp_mb();
1154
1155 /* this socket can poll_ll so tell the system call */
1156 return sock->ops->poll_mask(sock, events) |
1157 (sk_can_busy_loop(sock->sk) ? POLL_BUSY_LOOP : 0);
1158}
1159
1160/* No kernel lock held - perfect */ 1129/* No kernel lock held - perfect */
1161static __poll_t sock_poll(struct file *file, poll_table *wait) 1130static __poll_t sock_poll(struct file *file, poll_table *wait)
1162{ 1131{
1163 struct socket *sock = file->private_data; 1132 struct socket *sock = file->private_data;
1164 __poll_t events = poll_requested_events(wait), mask = 0; 1133 __poll_t events = poll_requested_events(wait);
1165
1166 if (sock->ops->poll) {
1167 sock_poll_busy_loop(sock, events);
1168 mask = sock->ops->poll(file, sock, wait);
1169 } else if (sock->ops->poll_mask) {
1170 sock_poll_wait(file, sock_get_poll_head(file, events), wait);
1171 mask = sock->ops->poll_mask(sock, events);
1172 }
1173 1134
1174 return mask | sock_poll_busy_flag(sock); 1135 sock_poll_busy_loop(sock, events);
1136 if (!sock->ops->poll)
1137 return 0;
1138 return sock->ops->poll(file, sock, wait) | sock_poll_busy_flag(sock);
1175} 1139}
1176 1140
1177static int sock_mmap(struct file *file, struct vm_area_struct *vma) 1141static int sock_mmap(struct file *file, struct vm_area_struct *vma)
diff --git a/net/strparser/strparser.c b/net/strparser/strparser.c
index 1a9695183599..373836615c57 100644
--- a/net/strparser/strparser.c
+++ b/net/strparser/strparser.c
@@ -392,7 +392,7 @@ static int strp_read_sock(struct strparser *strp)
392/* Lower sock lock held */ 392/* Lower sock lock held */
393void strp_data_ready(struct strparser *strp) 393void strp_data_ready(struct strparser *strp)
394{ 394{
395 if (unlikely(strp->stopped)) 395 if (unlikely(strp->stopped) || strp->paused)
396 return; 396 return;
397 397
398 /* This check is needed to synchronize with do_strp_work. 398 /* This check is needed to synchronize with do_strp_work.
@@ -407,9 +407,6 @@ void strp_data_ready(struct strparser *strp)
407 return; 407 return;
408 } 408 }
409 409
410 if (strp->paused)
411 return;
412
413 if (strp->need_bytes) { 410 if (strp->need_bytes) {
414 if (strp_peek_len(strp) < strp->need_bytes) 411 if (strp_peek_len(strp) < strp->need_bytes)
415 return; 412 return;
diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
index 3c85af058227..3fabf9f6a0f9 100644
--- a/net/sunrpc/xprt.c
+++ b/net/sunrpc/xprt.c
@@ -987,8 +987,6 @@ bool xprt_prepare_transmit(struct rpc_task *task)
987 task->tk_status = -EAGAIN; 987 task->tk_status = -EAGAIN;
988 goto out_unlock; 988 goto out_unlock;
989 } 989 }
990 if (!bc_prealloc(req) && !req->rq_xmit_bytes_sent)
991 req->rq_xid = xprt_alloc_xid(xprt);
992 ret = true; 990 ret = true;
993out_unlock: 991out_unlock:
994 spin_unlock_bh(&xprt->transport_lock); 992 spin_unlock_bh(&xprt->transport_lock);
@@ -1298,7 +1296,12 @@ void xprt_retry_reserve(struct rpc_task *task)
1298 1296
1299static inline __be32 xprt_alloc_xid(struct rpc_xprt *xprt) 1297static inline __be32 xprt_alloc_xid(struct rpc_xprt *xprt)
1300{ 1298{
1301 return (__force __be32)xprt->xid++; 1299 __be32 xid;
1300
1301 spin_lock(&xprt->reserve_lock);
1302 xid = (__force __be32)xprt->xid++;
1303 spin_unlock(&xprt->reserve_lock);
1304 return xid;
1302} 1305}
1303 1306
1304static inline void xprt_init_xid(struct rpc_xprt *xprt) 1307static inline void xprt_init_xid(struct rpc_xprt *xprt)
@@ -1316,6 +1319,7 @@ void xprt_request_init(struct rpc_task *task)
1316 req->rq_task = task; 1319 req->rq_task = task;
1317 req->rq_xprt = xprt; 1320 req->rq_xprt = xprt;
1318 req->rq_buffer = NULL; 1321 req->rq_buffer = NULL;
1322 req->rq_xid = xprt_alloc_xid(xprt);
1319 req->rq_connect_cookie = xprt->connect_cookie - 1; 1323 req->rq_connect_cookie = xprt->connect_cookie - 1;
1320 req->rq_bytes_sent = 0; 1324 req->rq_bytes_sent = 0;
1321 req->rq_snd_buf.len = 0; 1325 req->rq_snd_buf.len = 0;
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 14a5d055717d..930852c54d7a 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -692,9 +692,10 @@ static int tipc_getname(struct socket *sock, struct sockaddr *uaddr,
692} 692}
693 693
694/** 694/**
695 * tipc_poll - read pollmask 695 * tipc_poll - read and possibly block on 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: ???
698 * 699 *
699 * Returns pollmask value 700 * Returns pollmask value
700 * 701 *
@@ -708,12 +709,15 @@ static int tipc_getname(struct socket *sock, struct sockaddr *uaddr,
708 * imply that the operation will succeed, merely that it should be performed 709 * imply that the operation will succeed, merely that it should be performed
709 * and will not block. 710 * and will not block.
710 */ 711 */
711static __poll_t tipc_poll_mask(struct socket *sock, __poll_t events) 712static __poll_t tipc_poll(struct file *file, struct socket *sock,
713 poll_table *wait)
712{ 714{
713 struct sock *sk = sock->sk; 715 struct sock *sk = sock->sk;
714 struct tipc_sock *tsk = tipc_sk(sk); 716 struct tipc_sock *tsk = tipc_sk(sk);
715 __poll_t revents = 0; 717 __poll_t revents = 0;
716 718
719 sock_poll_wait(file, sk_sleep(sk), wait);
720
717 if (sk->sk_shutdown & RCV_SHUTDOWN) 721 if (sk->sk_shutdown & RCV_SHUTDOWN)
718 revents |= EPOLLRDHUP | EPOLLIN | EPOLLRDNORM; 722 revents |= EPOLLRDHUP | EPOLLIN | EPOLLRDNORM;
719 if (sk->sk_shutdown == SHUTDOWN_MASK) 723 if (sk->sk_shutdown == SHUTDOWN_MASK)
@@ -3033,7 +3037,7 @@ static const struct proto_ops msg_ops = {
3033 .socketpair = tipc_socketpair, 3037 .socketpair = tipc_socketpair,
3034 .accept = sock_no_accept, 3038 .accept = sock_no_accept,
3035 .getname = tipc_getname, 3039 .getname = tipc_getname,
3036 .poll_mask = tipc_poll_mask, 3040 .poll = tipc_poll,
3037 .ioctl = tipc_ioctl, 3041 .ioctl = tipc_ioctl,
3038 .listen = sock_no_listen, 3042 .listen = sock_no_listen,
3039 .shutdown = tipc_shutdown, 3043 .shutdown = tipc_shutdown,
@@ -3054,7 +3058,7 @@ static const struct proto_ops packet_ops = {
3054 .socketpair = tipc_socketpair, 3058 .socketpair = tipc_socketpair,
3055 .accept = tipc_accept, 3059 .accept = tipc_accept,
3056 .getname = tipc_getname, 3060 .getname = tipc_getname,
3057 .poll_mask = tipc_poll_mask, 3061 .poll = tipc_poll,
3058 .ioctl = tipc_ioctl, 3062 .ioctl = tipc_ioctl,
3059 .listen = tipc_listen, 3063 .listen = tipc_listen,
3060 .shutdown = tipc_shutdown, 3064 .shutdown = tipc_shutdown,
@@ -3075,7 +3079,7 @@ static const struct proto_ops stream_ops = {
3075 .socketpair = tipc_socketpair, 3079 .socketpair = tipc_socketpair,
3076 .accept = tipc_accept, 3080 .accept = tipc_accept,
3077 .getname = tipc_getname, 3081 .getname = tipc_getname,
3078 .poll_mask = tipc_poll_mask, 3082 .poll = tipc_poll,
3079 .ioctl = tipc_ioctl, 3083 .ioctl = tipc_ioctl,
3080 .listen = tipc_listen, 3084 .listen = tipc_listen,
3081 .shutdown = tipc_shutdown, 3085 .shutdown = tipc_shutdown,
diff --git a/net/tls/tls_main.c b/net/tls/tls_main.c
index a127d61e8af9..301f22430469 100644
--- a/net/tls/tls_main.c
+++ b/net/tls/tls_main.c
@@ -712,7 +712,7 @@ static int __init tls_register(void)
712 build_protos(tls_prots[TLSV4], &tcp_prot); 712 build_protos(tls_prots[TLSV4], &tcp_prot);
713 713
714 tls_sw_proto_ops = inet_stream_ops; 714 tls_sw_proto_ops = inet_stream_ops;
715 tls_sw_proto_ops.poll_mask = tls_sw_poll_mask; 715 tls_sw_proto_ops.poll = tls_sw_poll;
716 tls_sw_proto_ops.splice_read = tls_sw_splice_read; 716 tls_sw_proto_ops.splice_read = tls_sw_splice_read;
717 717
718#ifdef CONFIG_TLS_DEVICE 718#ifdef CONFIG_TLS_DEVICE
diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c
index f127fac88acf..d2380548f8f6 100644
--- a/net/tls/tls_sw.c
+++ b/net/tls/tls_sw.c
@@ -919,22 +919,23 @@ splice_read_end:
919 return copied ? : err; 919 return copied ? : err;
920} 920}
921 921
922__poll_t tls_sw_poll_mask(struct socket *sock, __poll_t events) 922unsigned int tls_sw_poll(struct file *file, struct socket *sock,
923 struct poll_table_struct *wait)
923{ 924{
925 unsigned int ret;
924 struct sock *sk = sock->sk; 926 struct sock *sk = sock->sk;
925 struct tls_context *tls_ctx = tls_get_ctx(sk); 927 struct tls_context *tls_ctx = tls_get_ctx(sk);
926 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx); 928 struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx);
927 __poll_t mask;
928 929
929 /* Grab EPOLLOUT and EPOLLHUP from the underlying socket */ 930 /* Grab POLLOUT and POLLHUP from the underlying socket */
930 mask = ctx->sk_poll_mask(sock, events); 931 ret = ctx->sk_poll(file, sock, wait);
931 932
932 /* Clear EPOLLIN bits, and set based on recv_pkt */ 933 /* Clear POLLIN bits, and set based on recv_pkt */
933 mask &= ~(EPOLLIN | EPOLLRDNORM); 934 ret &= ~(POLLIN | POLLRDNORM);
934 if (ctx->recv_pkt) 935 if (ctx->recv_pkt)
935 mask |= EPOLLIN | EPOLLRDNORM; 936 ret |= POLLIN | POLLRDNORM;
936 937
937 return mask; 938 return ret;
938} 939}
939 940
940static int tls_read_size(struct strparser *strp, struct sk_buff *skb) 941static int tls_read_size(struct strparser *strp, struct sk_buff *skb)
@@ -1191,7 +1192,7 @@ int tls_set_sw_offload(struct sock *sk, struct tls_context *ctx, int tx)
1191 sk->sk_data_ready = tls_data_ready; 1192 sk->sk_data_ready = tls_data_ready;
1192 write_unlock_bh(&sk->sk_callback_lock); 1193 write_unlock_bh(&sk->sk_callback_lock);
1193 1194
1194 sw_ctx_rx->sk_poll_mask = sk->sk_socket->ops->poll_mask; 1195 sw_ctx_rx->sk_poll = sk->sk_socket->ops->poll;
1195 1196
1196 strp_check_rcv(&sw_ctx_rx->strp); 1197 strp_check_rcv(&sw_ctx_rx->strp);
1197 } 1198 }
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
index 95b02a71fd47..e5473c03d667 100644
--- a/net/unix/af_unix.c
+++ b/net/unix/af_unix.c
@@ -638,8 +638,9 @@ static int unix_stream_connect(struct socket *, struct sockaddr *,
638static int unix_socketpair(struct socket *, struct socket *); 638static int unix_socketpair(struct socket *, struct socket *);
639static int unix_accept(struct socket *, struct socket *, int, bool); 639static int unix_accept(struct socket *, struct socket *, int, bool);
640static int unix_getname(struct socket *, struct sockaddr *, int); 640static int unix_getname(struct socket *, struct sockaddr *, int);
641static __poll_t unix_poll_mask(struct socket *, __poll_t); 641static __poll_t unix_poll(struct file *, struct socket *, poll_table *);
642static __poll_t unix_dgram_poll_mask(struct socket *, __poll_t); 642static __poll_t unix_dgram_poll(struct file *, struct socket *,
643 poll_table *);
643static int unix_ioctl(struct socket *, unsigned int, unsigned long); 644static int unix_ioctl(struct socket *, unsigned int, unsigned long);
644static int unix_shutdown(struct socket *, int); 645static int unix_shutdown(struct socket *, int);
645static int unix_stream_sendmsg(struct socket *, struct msghdr *, size_t); 646static int unix_stream_sendmsg(struct socket *, struct msghdr *, size_t);
@@ -680,7 +681,7 @@ static const struct proto_ops unix_stream_ops = {
680 .socketpair = unix_socketpair, 681 .socketpair = unix_socketpair,
681 .accept = unix_accept, 682 .accept = unix_accept,
682 .getname = unix_getname, 683 .getname = unix_getname,
683 .poll_mask = unix_poll_mask, 684 .poll = unix_poll,
684 .ioctl = unix_ioctl, 685 .ioctl = unix_ioctl,
685 .listen = unix_listen, 686 .listen = unix_listen,
686 .shutdown = unix_shutdown, 687 .shutdown = unix_shutdown,
@@ -703,7 +704,7 @@ static const struct proto_ops unix_dgram_ops = {
703 .socketpair = unix_socketpair, 704 .socketpair = unix_socketpair,
704 .accept = sock_no_accept, 705 .accept = sock_no_accept,
705 .getname = unix_getname, 706 .getname = unix_getname,
706 .poll_mask = unix_dgram_poll_mask, 707 .poll = unix_dgram_poll,
707 .ioctl = unix_ioctl, 708 .ioctl = unix_ioctl,
708 .listen = sock_no_listen, 709 .listen = sock_no_listen,
709 .shutdown = unix_shutdown, 710 .shutdown = unix_shutdown,
@@ -725,7 +726,7 @@ static const struct proto_ops unix_seqpacket_ops = {
725 .socketpair = unix_socketpair, 726 .socketpair = unix_socketpair,
726 .accept = unix_accept, 727 .accept = unix_accept,
727 .getname = unix_getname, 728 .getname = unix_getname,
728 .poll_mask = unix_dgram_poll_mask, 729 .poll = unix_dgram_poll,
729 .ioctl = unix_ioctl, 730 .ioctl = unix_ioctl,
730 .listen = unix_listen, 731 .listen = unix_listen,
731 .shutdown = unix_shutdown, 732 .shutdown = unix_shutdown,
@@ -2629,10 +2630,13 @@ static int unix_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
2629 return err; 2630 return err;
2630} 2631}
2631 2632
2632static __poll_t unix_poll_mask(struct socket *sock, __poll_t events) 2633static __poll_t unix_poll(struct file *file, struct socket *sock, poll_table *wait)
2633{ 2634{
2634 struct sock *sk = sock->sk; 2635 struct sock *sk = sock->sk;
2635 __poll_t mask = 0; 2636 __poll_t mask;
2637
2638 sock_poll_wait(file, sk_sleep(sk), wait);
2639 mask = 0;
2636 2640
2637 /* exceptional events? */ 2641 /* exceptional events? */
2638 if (sk->sk_err) 2642 if (sk->sk_err)
@@ -2661,11 +2665,15 @@ static __poll_t unix_poll_mask(struct socket *sock, __poll_t events)
2661 return mask; 2665 return mask;
2662} 2666}
2663 2667
2664static __poll_t unix_dgram_poll_mask(struct socket *sock, __poll_t events) 2668static __poll_t unix_dgram_poll(struct file *file, struct socket *sock,
2669 poll_table *wait)
2665{ 2670{
2666 struct sock *sk = sock->sk, *other; 2671 struct sock *sk = sock->sk, *other;
2667 int writable; 2672 unsigned int writable;
2668 __poll_t mask = 0; 2673 __poll_t mask;
2674
2675 sock_poll_wait(file, sk_sleep(sk), wait);
2676 mask = 0;
2669 2677
2670 /* exceptional events? */ 2678 /* exceptional events? */
2671 if (sk->sk_err || !skb_queue_empty(&sk->sk_error_queue)) 2679 if (sk->sk_err || !skb_queue_empty(&sk->sk_error_queue))
@@ -2691,7 +2699,7 @@ static __poll_t unix_dgram_poll_mask(struct socket *sock, __poll_t events)
2691 } 2699 }
2692 2700
2693 /* No write status requested, avoid expensive OUT tests. */ 2701 /* No write status requested, avoid expensive OUT tests. */
2694 if (!(events & (EPOLLWRBAND|EPOLLWRNORM|EPOLLOUT))) 2702 if (!(poll_requested_events(wait) & (EPOLLWRBAND|EPOLLWRNORM|EPOLLOUT)))
2695 return mask; 2703 return mask;
2696 2704
2697 writable = unix_writable(sk); 2705 writable = unix_writable(sk);
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
index bb5d5fa68c35..c1076c19b858 100644
--- a/net/vmw_vsock/af_vsock.c
+++ b/net/vmw_vsock/af_vsock.c
@@ -850,11 +850,18 @@ static int vsock_shutdown(struct socket *sock, int mode)
850 return err; 850 return err;
851} 851}
852 852
853static __poll_t vsock_poll_mask(struct socket *sock, __poll_t events) 853static __poll_t vsock_poll(struct file *file, struct socket *sock,
854 poll_table *wait)
854{ 855{
855 struct sock *sk = sock->sk; 856 struct sock *sk;
856 struct vsock_sock *vsk = vsock_sk(sk); 857 __poll_t mask;
857 __poll_t mask = 0; 858 struct vsock_sock *vsk;
859
860 sk = sock->sk;
861 vsk = vsock_sk(sk);
862
863 poll_wait(file, sk_sleep(sk), wait);
864 mask = 0;
858 865
859 if (sk->sk_err) 866 if (sk->sk_err)
860 /* Signify that there has been an error on this socket. */ 867 /* Signify that there has been an error on this socket. */
@@ -1084,7 +1091,7 @@ static const struct proto_ops vsock_dgram_ops = {
1084 .socketpair = sock_no_socketpair, 1091 .socketpair = sock_no_socketpair,
1085 .accept = sock_no_accept, 1092 .accept = sock_no_accept,
1086 .getname = vsock_getname, 1093 .getname = vsock_getname,
1087 .poll_mask = vsock_poll_mask, 1094 .poll = vsock_poll,
1088 .ioctl = sock_no_ioctl, 1095 .ioctl = sock_no_ioctl,
1089 .listen = sock_no_listen, 1096 .listen = sock_no_listen,
1090 .shutdown = vsock_shutdown, 1097 .shutdown = vsock_shutdown,
@@ -1842,7 +1849,7 @@ static const struct proto_ops vsock_stream_ops = {
1842 .socketpair = sock_no_socketpair, 1849 .socketpair = sock_no_socketpair,
1843 .accept = vsock_accept, 1850 .accept = vsock_accept,
1844 .getname = vsock_getname, 1851 .getname = vsock_getname,
1845 .poll_mask = vsock_poll_mask, 1852 .poll = vsock_poll,
1846 .ioctl = sock_no_ioctl, 1853 .ioctl = sock_no_ioctl,
1847 .listen = vsock_listen, 1854 .listen = vsock_listen,
1848 .shutdown = vsock_shutdown, 1855 .shutdown = vsock_shutdown,
diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c
index 8e03bd3f3668..5d3cce9e8744 100644
--- a/net/vmw_vsock/virtio_transport.c
+++ b/net/vmw_vsock/virtio_transport.c
@@ -201,7 +201,7 @@ virtio_transport_send_pkt(struct virtio_vsock_pkt *pkt)
201 return -ENODEV; 201 return -ENODEV;
202 } 202 }
203 203
204 if (le32_to_cpu(pkt->hdr.dst_cid) == vsock->guest_cid) 204 if (le64_to_cpu(pkt->hdr.dst_cid) == vsock->guest_cid)
205 return virtio_transport_send_pkt_loopback(vsock, pkt); 205 return virtio_transport_send_pkt_loopback(vsock, pkt);
206 206
207 if (pkt->reply) 207 if (pkt->reply)
diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
index f93365ae0fdd..d49aa79b7997 100644
--- a/net/x25/af_x25.c
+++ b/net/x25/af_x25.c
@@ -1750,7 +1750,7 @@ static const struct proto_ops x25_proto_ops = {
1750 .socketpair = sock_no_socketpair, 1750 .socketpair = sock_no_socketpair,
1751 .accept = x25_accept, 1751 .accept = x25_accept,
1752 .getname = x25_getname, 1752 .getname = x25_getname,
1753 .poll_mask = datagram_poll_mask, 1753 .poll = datagram_poll,
1754 .ioctl = x25_ioctl, 1754 .ioctl = x25_ioctl,
1755#ifdef CONFIG_COMPAT 1755#ifdef CONFIG_COMPAT
1756 .compat_ioctl = compat_x25_ioctl, 1756 .compat_ioctl = compat_x25_ioctl,
diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c
index 36919a254ba3..59fb7d3c36a3 100644
--- a/net/xdp/xsk.c
+++ b/net/xdp/xsk.c
@@ -118,6 +118,9 @@ int xsk_generic_rcv(struct xdp_sock *xs, struct xdp_buff *xdp)
118 u64 addr; 118 u64 addr;
119 int err; 119 int err;
120 120
121 if (xs->dev != xdp->rxq->dev || xs->queue_id != xdp->rxq->queue_index)
122 return -EINVAL;
123
121 if (!xskq_peek_addr(xs->umem->fq, &addr) || 124 if (!xskq_peek_addr(xs->umem->fq, &addr) ||
122 len > xs->umem->chunk_size_nohr) { 125 len > xs->umem->chunk_size_nohr) {
123 xs->rx_dropped++; 126 xs->rx_dropped++;
@@ -300,9 +303,10 @@ static int xsk_sendmsg(struct socket *sock, struct msghdr *m, size_t total_len)
300 return (xs->zc) ? xsk_zc_xmit(sk) : xsk_generic_xmit(sk, m, total_len); 303 return (xs->zc) ? xsk_zc_xmit(sk) : xsk_generic_xmit(sk, m, total_len);
301} 304}
302 305
303static __poll_t xsk_poll_mask(struct socket *sock, __poll_t events) 306static unsigned int xsk_poll(struct file *file, struct socket *sock,
307 struct poll_table_struct *wait)
304{ 308{
305 __poll_t mask = datagram_poll_mask(sock, events); 309 unsigned int mask = datagram_poll(file, sock, wait);
306 struct sock *sk = sock->sk; 310 struct sock *sk = sock->sk;
307 struct xdp_sock *xs = xdp_sk(sk); 311 struct xdp_sock *xs = xdp_sk(sk);
308 312
@@ -693,7 +697,7 @@ static const struct proto_ops xsk_proto_ops = {
693 .socketpair = sock_no_socketpair, 697 .socketpair = sock_no_socketpair,
694 .accept = sock_no_accept, 698 .accept = sock_no_accept,
695 .getname = sock_no_getname, 699 .getname = sock_no_getname,
696 .poll_mask = xsk_poll_mask, 700 .poll = xsk_poll,
697 .ioctl = sock_no_ioctl, 701 .ioctl = sock_no_ioctl,
698 .listen = sock_no_listen, 702 .listen = sock_no_listen,
699 .shutdown = sock_no_shutdown, 703 .shutdown = sock_no_shutdown,