BACKPORT net: Fix use after free by removing length arg from sk_data_ready callbacks.
authorDavid S. Miller <davem@davemloft.net>
Fri, 11 Apr 2014 20:15:36 +0000 (16:15 -0400)
committerDanny Wood <danwood76@gmail.com>
Thu, 15 Jul 2021 09:45:36 +0000 (10:45 +0100)
Several spots in the kernel perform a sequence like:

skb_queue_tail(&sk->s_receive_queue, skb);
sk->sk_data_ready(sk, skb->len);

But at the moment we place the SKB onto the socket receive queue it
can be consumed and freed up.  So this skb->len access is potentially
to freed up memory.

Furthermore, the skb->len can be modified by the consumer so it is
possible that the value isn't accurate.

And finally, no actual implementation of this callback actually uses
the length argument.  And since nobody actually cared about it's
value, lots of call sites pass arbitrary values in such as '0' and
even '1'.

So just remove the length argument from the callback, that way there
is no confusion whatsoever and all of these use-after-free cases get
fixed as a side effect.

Based upon a patch by Eric Dumazet and his suggestion to audit this
issue tree-wide.

Change-Id: Ia7443b38da20849b684957049812805ff25ab1f0
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: elektroschmock <elektroschmock78@googlemail.com>
54 files changed:
drivers/scsi/iscsi_tcp.c
drivers/scsi/iscsi_tcp.h
fs/dlm/lowcomms.c
fs/ncpfs/ncp_fs_sb.h
fs/ncpfs/sock.c
fs/ocfs2/cluster/tcp.c
fs/ocfs2/cluster/tcp_internal.h
include/linux/sunrpc/svcsock.h
include/net/sctp/sctp.h
include/net/sock.h
net/atm/clip.c
net/atm/lec.c
net/atm/mpc.c
net/atm/raw.c
net/atm/signaling.c
net/ax25/ax25_in.c
net/bluetooth/l2cap_sock.c
net/bluetooth/rfcomm/core.c
net/bluetooth/rfcomm/sock.c
net/bluetooth/sco.c
net/caif/caif_socket.c
net/ceph/messenger.c
net/core/skbuff.c
net/core/sock.c
net/dccp/input.c
net/dccp/minisocks.c
net/decnet/dn_nsp_in.c
net/ipv4/tcp_input.c
net/ipv4/tcp_ipv4.c
net/ipv4/tcp_minisocks.c
net/iucv/af_iucv.c
net/key/af_key.c
net/netlink/af_netlink.c
net/netrom/af_netrom.c
net/nfc/llcp_core.c
net/packet/af_packet.c
net/phonet/pep-gprs.c
net/phonet/pep.c
net/rds/tcp.h
net/rds/tcp_listen.c
net/rds/tcp_recv.c
net/rose/af_rose.c
net/rxrpc/ar-input.c
net/rxrpc/ar-internal.h
net/sctp/socket.c
net/sctp/ulpqueue.c
net/sunrpc/svcsock.c
net/sunrpc/xprtsock.c
net/tipc/socket.c
net/unix/af_unix.c
net/vmw_vsock/vmci_transport_notify.c
net/vmw_vsock/vmci_transport_notify_qstate.c
net/x25/af_x25.c
net/x25/x25_in.c

index 9e2588a6881cb72751ece0f0d2092f2e6e214353..f679365e8d140840a75fda9843d0f9ee40fafdc4 100644 (file)
@@ -124,7 +124,7 @@ static inline int iscsi_sw_sk_state_check(struct sock *sk)
        return 0;
 }
 
-static void iscsi_sw_tcp_data_ready(struct sock *sk, int flag)
+static void iscsi_sw_tcp_data_ready(struct sock *sk)
 {
        struct iscsi_conn *conn;
        struct iscsi_tcp_conn *tcp_conn;
index 666fe09378fa580d62f2625f174f85bec7ece228..f42ecb238af549327d539d822824d87001975fee 100644 (file)
@@ -40,7 +40,7 @@ struct iscsi_sw_tcp_conn {
 
        struct iscsi_sw_tcp_send out;
        /* old values for socket callbacks */
-       void                    (*old_data_ready)(struct sock *, int);
+       void                    (*old_data_ready)(struct sock *);
        void                    (*old_state_change)(struct sock *);
        void                    (*old_write_space)(struct sock *);
 
index d0ccd2fd79eb0430ac08db074edfb811859e4b90..ff01a23cc45312fb5f3113a65147b48a6f39f9a2 100644 (file)
@@ -412,7 +412,7 @@ int dlm_lowcomms_addr(int nodeid, struct sockaddr_storage *addr, int len)
 }
 
 /* Data available on socket or listen socket received a connect */
-static void lowcomms_data_ready(struct sock *sk, int count_unused)
+static void lowcomms_data_ready(struct sock *sk)
 {
        struct connection *con = sock2con(sk);
        if (con && !test_and_set_bit(CF_READ_PENDING, &con->flags))
index c51b2c54353971f785020570ee6773e60058bef0..4efa0551d85eb29c7df92878e90945d5e5a467b3 100644 (file)
@@ -111,7 +111,7 @@ struct ncp_server {
 
        spinlock_t requests_lock;       /* Lock accesses to tx.requests, tx.creq and rcv.creq when STREAM mode */
 
-       void (*data_ready)(struct sock* sk, int len);
+       void (*data_ready)(struct sock* sk);
        void (*error_report)(struct sock* sk);
        void (*write_space)(struct sock* sk);   /* STREAM mode only */
        struct {
@@ -153,7 +153,7 @@ extern void ncp_tcp_tx_proc(struct work_struct *work);
 extern void ncpdgram_rcv_proc(struct work_struct *work);
 extern void ncpdgram_timeout_proc(struct work_struct *work);
 extern void ncpdgram_timeout_call(unsigned long server);
-extern void ncp_tcp_data_ready(struct sock* sk, int len);
+extern void ncp_tcp_data_ready(struct sock* sk);
 extern void ncp_tcp_write_space(struct sock* sk);
 extern void ncp_tcp_error_report(struct sock* sk);
 
index 3a1587222c8a7a3eeea9b2990a3d734d313e767f..652da0db932c5665a9855dae1ad51f85ff8e7ada 100644 (file)
@@ -96,11 +96,11 @@ static void ncp_req_put(struct ncp_request_reply *req)
                kfree(req);
 }
 
-void ncp_tcp_data_ready(struct sock *sk, int len)
+void ncp_tcp_data_ready(struct sock *sk)
 {
        struct ncp_server *server = sk->sk_user_data;
 
-       server->data_ready(sk, len);
+       server->data_ready(sk);
        schedule_work(&server->rcv.tq);
 }
 
index 6a023001556205889c5bb4e5162c22646350e98c..4ef1f26402b34786c7e6de52fe292c555787ff15 100644 (file)
@@ -137,7 +137,7 @@ static int o2net_sys_err_translations[O2NET_ERR_MAX] =
 static void o2net_sc_connect_completed(struct work_struct *work);
 static void o2net_rx_until_empty(struct work_struct *work);
 static void o2net_shutdown_sc(struct work_struct *work);
-static void o2net_listen_data_ready(struct sock *sk, int bytes);
+static void o2net_listen_data_ready(struct sock *sk);
 static void o2net_sc_send_keep_req(struct work_struct *work);
 static void o2net_idle_timer(unsigned long data);
 static void o2net_sc_postpone_idle(struct o2net_sock_container *sc);
@@ -593,9 +593,9 @@ static void o2net_set_nn_state(struct o2net_node *nn,
 }
 
 /* see o2net_register_callbacks() */
-static void o2net_data_ready(struct sock *sk, int bytes)
+static void o2net_data_ready(struct sock *sk)
 {
-       void (*ready)(struct sock *sk, int bytes);
+       void (*ready)(struct sock *sk);
 
        read_lock(&sk->sk_callback_lock);
        if (sk->sk_user_data) {
@@ -609,7 +609,7 @@ static void o2net_data_ready(struct sock *sk, int bytes)
        }
        read_unlock(&sk->sk_callback_lock);
 
-       ready(sk, bytes);
+       ready(sk);
 }
 
 /* see o2net_register_callbacks() */
@@ -1946,9 +1946,9 @@ static void o2net_accept_many(struct work_struct *work)
                cond_resched();
 }
 
-static void o2net_listen_data_ready(struct sock *sk, int bytes)
+static void o2net_listen_data_ready(struct sock *sk)
 {
-       void (*ready)(struct sock *sk, int bytes);
+       void (*ready)(struct sock *sk);
 
        read_lock(&sk->sk_callback_lock);
        ready = sk->sk_user_data;
@@ -1971,7 +1971,6 @@ static void o2net_listen_data_ready(struct sock *sk, int bytes)
         */
 
        if (sk->sk_state == TCP_LISTEN) {
-               mlog(ML_TCP, "bytes: %d\n", bytes);
                queue_work(o2net_wq, &o2net_listen_work);
        } else {
                ready = NULL;
@@ -1980,7 +1979,7 @@ static void o2net_listen_data_ready(struct sock *sk, int bytes)
 out:
        read_unlock(&sk->sk_callback_lock);
        if (ready != NULL)
-               ready(sk, bytes);
+               ready(sk);
 }
 
 static int o2net_open_listening_sock(__be32 addr, __be16 port)
index 4cbcb65784a358b6e10703b589b724b18a71022d..dc024367110a60d157d0d46c671f35e1e611f2a6 100644 (file)
@@ -165,7 +165,7 @@ struct o2net_sock_container {
 
        /* original handlers for the sockets */
        void                    (*sc_state_change)(struct sock *sk);
-       void                    (*sc_data_ready)(struct sock *sk, int bytes);
+       void                    (*sc_data_ready)(struct sock *sk);
 
        u32                     sc_msg_key;
        u16                     sc_msg_type;
index 947009ed59969af2b79ca3f2a049eaec323f3f3c..2e780134f4490ed9386a01d87ba2e507c32ee4b3 100644 (file)
@@ -22,7 +22,7 @@ struct svc_sock {
 
        /* We keep the old state_change and data_ready CB's here */
        void                    (*sk_ostate)(struct sock *);
-       void                    (*sk_odata)(struct sock *, int bytes);
+       void                    (*sk_odata)(struct sock *);
        void                    (*sk_owspace)(struct sock *);
 
        /* private TCP part */
index ee81c68f24a6ae3fe0be4a3857de879226025e08..6b1783d3c1b2be5054410c6c02cd659cab2d6d95 100644 (file)
@@ -127,7 +127,7 @@ extern void sctp_addr_wq_mgmt(struct net *, struct sctp_sockaddr_entry *, int);
 int sctp_backlog_rcv(struct sock *sk, struct sk_buff *skb);
 int sctp_inet_listen(struct socket *sock, int backlog);
 void sctp_write_space(struct sock *sk);
-void sctp_data_ready(struct sock *sk, int len);
+void sctp_data_ready(struct sock *sk);
 unsigned int sctp_poll(struct file *file, struct socket *sock,
                poll_table *wait);
 void sctp_sock_rfree(struct sk_buff *skb);
index 76481c1a2fc75462d7c57f94767637abca4f0360..565b572a87b43353c256f6cd18fe31f9d30f2052 100644 (file)
@@ -414,7 +414,7 @@ struct sock {
        uid_t                   knox_uid;
        pid_t                   knox_pid;
        void                    (*sk_state_change)(struct sock *sk);
-       void                    (*sk_data_ready)(struct sock *sk, int bytes);
+       void                    (*sk_data_ready)(struct sock *sk);
        void                    (*sk_write_space)(struct sock *sk);
        void                    (*sk_error_report)(struct sock *sk);
        int                     (*sk_backlog_rcv)(struct sock *sk,
index 8ae3a7879335f28cc082ea6c2a3bf8da2b8820a3..f60e3c2015a56d38f87d896a43bf24228fcc351b 100644 (file)
@@ -68,7 +68,7 @@ static int to_atmarpd(enum atmarp_ctrl_type type, int itf, __be32 ip)
 
        sk = sk_atm(atmarpd);
        skb_queue_tail(&sk->sk_receive_queue, skb);
-       sk->sk_data_ready(sk, skb->len);
+       sk->sk_data_ready(sk);
        return 0;
 }
 
index f23916be18fb2416b951019b45c99df943cc390c..1fabc6635f4f6c7935a73b4e717a34e419fcf49e 100644 (file)
@@ -152,7 +152,7 @@ static void lec_handle_bridge(struct sk_buff *skb, struct net_device *dev)
                atm_force_charge(priv->lecd, skb2->truesize);
                sk = sk_atm(priv->lecd);
                skb_queue_tail(&sk->sk_receive_queue, skb2);
-               sk->sk_data_ready(sk, skb2->len);
+               sk->sk_data_ready(sk);
        }
 }
 #endif /* defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE) */
@@ -447,7 +447,7 @@ static int lec_atm_send(struct atm_vcc *vcc, struct sk_buff *skb)
                        atm_force_charge(priv->lecd, skb2->truesize);
                        sk = sk_atm(priv->lecd);
                        skb_queue_tail(&sk->sk_receive_queue, skb2);
-                       sk->sk_data_ready(sk, skb2->len);
+                       sk->sk_data_ready(sk);
                }
        }
 #endif /* defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE) */
@@ -530,13 +530,13 @@ send_to_lecd(struct lec_priv *priv, atmlec_msg_type type,
        atm_force_charge(priv->lecd, skb->truesize);
        sk = sk_atm(priv->lecd);
        skb_queue_tail(&sk->sk_receive_queue, skb);
-       sk->sk_data_ready(sk, skb->len);
+       sk->sk_data_ready(sk);
 
        if (data != NULL) {
                pr_debug("about to send %d bytes of data\n", data->len);
                atm_force_charge(priv->lecd, data->truesize);
                skb_queue_tail(&sk->sk_receive_queue, data);
-               sk->sk_data_ready(sk, skb->len);
+               sk->sk_data_ready(sk);
        }
 
        return 0;
@@ -616,7 +616,7 @@ static void lec_push(struct atm_vcc *vcc, struct sk_buff *skb)
 
                pr_debug("%s: To daemon\n", dev->name);
                skb_queue_tail(&sk->sk_receive_queue, skb);
-               sk->sk_data_ready(sk, skb->len);
+               sk->sk_data_ready(sk);
        } else {                /* Data frame, queue to protocol handlers */
                struct lec_arp_table *entry;
                unsigned char *src, *dst;
index d4cc1be5c36469ea2b24b7dbb9375e364e6986b0..7c4e4b71757ce311f05867d14408498f24fb591a 100644 (file)
@@ -706,7 +706,7 @@ static void mpc_push(struct atm_vcc *vcc, struct sk_buff *skb)
                dprintk("(%s) control packet arrived\n", dev->name);
                /* Pass control packets to daemon */
                skb_queue_tail(&sk->sk_receive_queue, skb);
-               sk->sk_data_ready(sk, skb->len);
+               sk->sk_data_ready(sk);
                return;
        }
 
@@ -992,7 +992,7 @@ int msg_to_mpoad(struct k_message *mesg, struct mpoa_client *mpc)
 
        sk = sk_atm(mpc->mpoad_vcc);
        skb_queue_tail(&sk->sk_receive_queue, skb);
-       sk->sk_data_ready(sk, skb->len);
+       sk->sk_data_ready(sk);
 
        return 0;
 }
@@ -1275,7 +1275,7 @@ static void purge_egress_shortcut(struct atm_vcc *vcc, eg_cache_entry *entry)
 
        sk = sk_atm(vcc);
        skb_queue_tail(&sk->sk_receive_queue, skb);
-       sk->sk_data_ready(sk, skb->len);
+       sk->sk_data_ready(sk);
        dprintk("exiting\n");
 }
 
index b4f7b9ff3c741880e1f587f8f27a939ab62c25dd..2e17e97a7a8b02e9570a385e1d99297fa50f7348 100644 (file)
@@ -25,7 +25,7 @@ static void atm_push_raw(struct atm_vcc *vcc, struct sk_buff *skb)
                struct sock *sk = sk_atm(vcc);
 
                skb_queue_tail(&sk->sk_receive_queue, skb);
-               sk->sk_data_ready(sk, skb->len);
+               sk->sk_data_ready(sk);
        }
 }
 
index 4176887e72eb97c059148069fdf6490091bf056a..523bce72f698ef2a34cfc66da4dbe69cde954fe9 100644 (file)
@@ -51,7 +51,7 @@ static void sigd_put_skb(struct sk_buff *skb)
 #endif
        atm_force_charge(sigd, skb->truesize);
        skb_queue_tail(&sk_atm(sigd)->sk_receive_queue, skb);
-       sk_atm(sigd)->sk_data_ready(sk_atm(sigd), skb->len);
+       sk_atm(sigd)->sk_data_ready(sk_atm(sigd));
 }
 
 static void modify_qos(struct atm_vcc *vcc, struct atmsvc_msg *msg)
index 96f4cab3a2f96c09176e3cb686657c0d9892d0aa..7ed8ab7248198f3d47c6566c52a971fe00d1afac 100644 (file)
@@ -422,7 +422,7 @@ static int ax25_rcv(struct sk_buff *skb, struct net_device *dev,
 
        if (sk) {
                if (!sock_flag(sk, SOCK_DEAD))
-                       sk->sk_data_ready(sk, skb->len);
+                       sk->sk_data_ready(sk);
                sock_put(sk);
        } else {
 free:
index 4b966c6c0145c993b3286b959e8ce3227bacacd6..1eb8b8ec4a02b2a0dd2bf7dfac41c86880d00c70 100644 (file)
@@ -1043,7 +1043,7 @@ static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err)
 
                if (parent) {
                        bt_accept_unlink(sk);
-                       parent->sk_data_ready(parent, 0);
+                       parent->sk_data_ready(parent);
                } else {
                        sk->sk_state_change(sk);
                }
@@ -1092,7 +1092,7 @@ static void l2cap_sock_ready_cb(struct l2cap_chan *chan)
        sk->sk_state_change(sk);
 
        if (parent)
-               parent->sk_data_ready(parent, 0);
+               parent->sk_data_ready(parent);
 
        release_sock(sk);
 }
@@ -1103,7 +1103,7 @@ static void l2cap_sock_defer_cb(struct l2cap_chan *chan)
        struct sock *parent = bt_sk(sk)->parent;
 
        if (parent)
-               parent->sk_data_ready(parent, 0);
+       parent->sk_data_ready(parent);
 }
 
 static struct l2cap_ops l2cap_chan_ops = {
index 3ca5e40fe3908f5bc0e362ce27d8edf39519790b..6ac9b875d884dbc7ec8bd76120f2a79b31652d4d 100644 (file)
@@ -186,9 +186,9 @@ static void rfcomm_l2state_change(struct sock *sk)
        rfcomm_schedule();
 }
 
-static void rfcomm_l2data_ready(struct sock *sk, int bytes)
+static void rfcomm_l2data_ready(struct sock *sk)
 {
-       BT_DBG("%p bytes %d", sk, bytes);
+       BT_DBG("%pK", sk);
        rfcomm_schedule();
 }
 
index 7ca014daa5ab815bc129436ef533a9c22fd9218a..794c8335025a60b938d0e027be9336c707fd6caa 100644 (file)
@@ -54,7 +54,7 @@ static void rfcomm_sk_data_ready(struct rfcomm_dlc *d, struct sk_buff *skb)
 
        atomic_add(skb->len, &sk->sk_rmem_alloc);
        skb_queue_tail(&sk->sk_receive_queue, skb);
-       sk->sk_data_ready(sk, skb->len);
+       sk->sk_data_ready(sk);
 
        if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf)
                rfcomm_dlc_throttle(d);
@@ -84,7 +84,7 @@ static void rfcomm_sk_state_change(struct rfcomm_dlc *d, int err)
                        sock_set_flag(sk, SOCK_ZAPPED);
                        bt_accept_unlink(sk);
                }
-               parent->sk_data_ready(parent, 0);
+               parent->sk_data_ready(parent);
        } else {
                if (d->state == BT_CONNECTED)
                        rfcomm_session_getaddr(d->session, &bt_sk(sk)->src, NULL);
index 6335af2a58e090894fc228ab56194ae595b8937b..0aeeffbdc441fa67493d367c64177d64cd1d8794 100644 (file)
@@ -995,7 +995,7 @@ static void sco_conn_ready(struct sco_conn *conn)
                        sk->sk_state = BT_CONNECTED;
 
                /* Wake up parent */
-               parent->sk_data_ready(parent, 1);
+               parent->sk_data_ready(parent);
 
                bh_unlock_sock(parent);
 
index afeb8e07ee41c44639222557f5272eaca26900b7..a1a5e852be54e990cc61b0c28a60f66d953cceee 100644 (file)
@@ -124,7 +124,6 @@ static void caif_flow_ctrl(struct sock *sk, int mode)
 static int caif_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
 {
        int err;
-       int skb_len;
        unsigned long flags;
        struct sk_buff_head *list = &sk->sk_receive_queue;
        struct caifsock *cf_sk = container_of(sk, struct caifsock, sk);
@@ -153,14 +152,13 @@ static int caif_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
         * may be freed by other threads of control pulling packets
         * from the queue.
         */
-       skb_len = skb->len;
        spin_lock_irqsave(&list->lock, flags);
        if (!sock_flag(sk, SOCK_DEAD))
                __skb_queue_tail(list, skb);
        spin_unlock_irqrestore(&list->lock, flags);
 
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, skb_len);
+               sk->sk_data_ready(sk);
        else
                kfree_skb(skb);
        return 0;
index c99cfde87bd67d61c5ad75e7a95cb68a6bad0e10..8aabe00422acf57e5160b15e87f2031171e2560d 100644 (file)
@@ -384,7 +384,7 @@ static void con_sock_state_closed(struct ceph_connection *con)
  */
 
 /* data available on socket, or listen socket received a connect */
-static void ceph_sock_data_ready(struct sock *sk, int count_unused)
+static void ceph_sock_data_ready(struct sock *sk)
 {
        struct ceph_connection *con = sk->sk_user_data;
        if (atomic_read(&con->msgr->stopping)) {
index 05195b8c871890b8081dd7734eeceabaf0637f84..284cdb7b2c65ad401a453b39f7e84f23fe9d2d95 100644 (file)
@@ -3272,8 +3272,6 @@ static void sock_rmem_free(struct sk_buff *skb)
  */
 int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb)
 {
-       int len = skb->len;
-
        if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >=
            (unsigned int)sk->sk_rcvbuf)
                return -ENOMEM;
@@ -3288,7 +3286,7 @@ int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb)
 
        skb_queue_tail(&sk->sk_error_queue, skb);
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, len);
+               sk->sk_data_ready(sk);
        return 0;
 }
 EXPORT_SYMBOL(sock_queue_err_skb);
index f77dd6c0a560fc2713d03457d9cb63d8e9096d9d..0e1f09cff59c363305c70e79144bbee443223f01 100644 (file)
@@ -481,7 +481,7 @@ int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
        spin_unlock_irqrestore(&list->lock, flags);
 
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, skb_len);
+               sk->sk_data_ready(sk);
        return 0;
 }
 EXPORT_SYMBOL(sock_queue_rcv_skb);
@@ -2233,7 +2233,7 @@ static void sock_def_error_report(struct sock *sk)
        rcu_read_unlock();
 }
 
-static void sock_def_readable(struct sock *sk, int len)
+static void sock_def_readable(struct sock *sk)
 {
        struct socket_wq *wq;
 
index e511ccc74a0782fa26b8aa9a98de23931485c601..700440e4fa3bbc0a4ef52f1d3262be97132af78f 100644 (file)
@@ -28,7 +28,7 @@ static void dccp_enqueue_skb(struct sock *sk, struct sk_buff *skb)
        __skb_pull(skb, dccp_hdr(skb)->dccph_doff * 4);
        __skb_queue_tail(&sk->sk_receive_queue, skb);
        skb_set_owner_r(skb, sk);
-       sk->sk_data_ready(sk, 0);
+       sk->sk_data_ready(sk);
 }
 
 static void dccp_fin(struct sock *sk, struct sk_buff *skb)
index e47b15dd9b39bc21120360e1775a03dda4a81cca..59951340fbc8fe7ea0c93f0484bffcd76cf6738f 100644 (file)
@@ -241,7 +241,7 @@ int dccp_child_process(struct sock *parent, struct sock *child,
 
                /* Wakeup parent, send SIGIO */
                if (state == DCCP_RESPOND && child->sk_state != state)
-                       parent->sk_data_ready(parent, 0);
+                       parent->sk_data_ready(parent);
        } else {
                /* Alas, it is possible again, because we do lookup
                 * in main socket hash table and lock on listening
index c344163e6ac0e7bef952e25280601b60d2f74dbe..fe5f01485d3370ba4d645e4e640f073a1e26e41c 100644 (file)
@@ -585,7 +585,6 @@ out:
 static __inline__ int dn_queue_skb(struct sock *sk, struct sk_buff *skb, int sig, struct sk_buff_head *queue)
 {
        int err;
-       int skb_len;
 
        /* Cast skb->rcvbuf to unsigned... It's pointless, but reduces
           number of warnings when compiling with -W --ANK
@@ -600,12 +599,11 @@ static __inline__ int dn_queue_skb(struct sock *sk, struct sk_buff *skb, int sig
        if (err)
                goto out;
 
-       skb_len = skb->len;
        skb_set_owner_r(skb, sk);
        skb_queue_tail(queue, skb);
 
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, skb_len);
+               sk->sk_data_ready(sk);
 out:
        return err;
 }
index f2ee3d40d924fcedbbd56643d5cda566a98b1efd..eb19bd3bea94256c4973824da085fe877cbcd930 100644 (file)
@@ -4427,7 +4427,7 @@ queue_and_out:
                if (eaten > 0)
                        kfree_skb_partial(skb, fragstolen);
                if (!sock_flag(sk, SOCK_DEAD))
-                       sk->sk_data_ready(sk, 0);
+                       sk->sk_data_ready(sk);
                return;
        }
 
@@ -4947,7 +4947,7 @@ static void tcp_urg(struct sock *sk, struct sk_buff *skb, const struct tcphdr *t
                                BUG();
                        tp->urg_data = TCP_URG_VALID | tmp;
                        if (!sock_flag(sk, SOCK_DEAD))
-                               sk->sk_data_ready(sk, 0);
+                               sk->sk_data_ready(sk);
                }
        }
 }
@@ -5033,11 +5033,11 @@ static bool tcp_dma_try_early_copy(struct sock *sk, struct sk_buff *skb,
                    (tcp_flag_word(tcp_hdr(skb)) & TCP_FLAG_PSH) ||
                    (atomic_read(&sk->sk_rmem_alloc) > (sk->sk_rcvbuf >> 1))) {
                        tp->ucopy.wakeup = 1;
-                       sk->sk_data_ready(sk, 0);
+                       sk->sk_data_ready(sk);
                }
        } else if (chunk > 0) {
                tp->ucopy.wakeup = 1;
-               sk->sk_data_ready(sk, 0);
+               sk->sk_data_ready(sk);
        }
 out:
        return copied_early;
@@ -5308,7 +5308,7 @@ no_ack:
 #endif
                        if (eaten)
                                kfree_skb_partial(skb, fragstolen);
-                       sk->sk_data_ready(sk, 0);
+                       sk->sk_data_ready(sk);
                        return 0;
                }
        }
index 64c1fcb6fd2fef79464d029cc95667bec3b15951..3110456f3eeaa09ac1fa8b085918cdf58be017ae 100644 (file)
@@ -1468,7 +1468,7 @@ static int tcp_v4_conn_req_fastopen(struct sock *sk,
                tp->rcv_nxt = TCP_SKB_CB(skb)->end_seq;
                tp->syn_data_acked = 1;
        }
-       sk->sk_data_ready(sk, 0);
+       sk->sk_data_ready(sk);
        bh_unlock_sock(child);
        sock_put(child);
        WARN_ON(req->sk == NULL);
index 914a55db80311e1dd61f7c52e515b60a6566e3ef..aa797ae1c93acc92f72013aed3f42aa50fd8757e 100644 (file)
@@ -754,7 +754,7 @@ int tcp_child_process(struct sock *parent, struct sock *child,
                                            skb->len);
                /* Wakeup parent, send SIGIO */
                if (state == TCP_SYN_RECV && child->sk_state != state)
-                       parent->sk_data_ready(parent, 0);
+                       parent->sk_data_ready(parent);
        } else {
                /* Alas, it is possible again, because we do lookup
                 * in main socket hash table and lock on listening
index 215e9b008db647f5c96928f92a4d979eff220295..93578409aa1f414d1fec695477793c8bbc7ec09a 100644 (file)
@@ -1756,7 +1756,7 @@ static int iucv_callback_connreq(struct iucv_path *path,
 
        /* Wake up accept */
        nsk->sk_state = IUCV_CONNECTED;
-       sk->sk_data_ready(sk, 1);
+       sk->sk_data_ready(sk);
        err = 0;
 fail:
        bh_unlock_sock(sk);
@@ -1967,7 +1967,7 @@ static int afiucv_hs_callback_syn(struct sock *sk, struct sk_buff *skb)
        if (!err) {
                iucv_accept_enqueue(sk, nsk);
                nsk->sk_state = IUCV_CONNECTED;
-               sk->sk_data_ready(sk, 1);
+               sk->sk_data_ready(sk);
        } else
                iucv_sock_kill(nsk);
        bh_unlock_sock(sk);
index 3ff567fb90ee908b639a740c86341dc1821b59fb..1b2959d556f09d259f59a8d3d26b8fd4a9d5475d 100644 (file)
@@ -205,7 +205,7 @@ static int pfkey_broadcast_one(struct sk_buff *skb, struct sk_buff **skb2,
                if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf) {
                        skb_set_owner_r(*skb2, sk);
                        skb_queue_tail(&sk->sk_receive_queue, *skb2);
-                       sk->sk_data_ready(sk, (*skb2)->len);
+                       sk->sk_data_ready(sk);
                        *skb2 = NULL;
                        err = 0;
                }
index 56ff3b45227716ac571f38e09e583de95d348722..b54e8d487079eb670b3530b4707570bdb67ef983 100644 (file)
@@ -1545,7 +1545,7 @@ static int __netlink_sendskb(struct sock *sk, struct sk_buff *skb)
        else
 #endif /* CONFIG_NETLINK_MMAP */
                skb_queue_tail(&sk->sk_receive_queue, skb);
-       sk->sk_data_ready(sk, len);
+       sk->sk_data_ready(sk);
        return len;
 }
 
@@ -2278,7 +2278,7 @@ out:
        return err ? : copied;
 }
 
-static void netlink_data_ready(struct sock *sk, int len)
+static void netlink_data_ready(struct sock *sk)
 {
        BUG();
 }
index 13b92982a506e04b98bef761c7cbb2c950eeab90..e1d45bd8fb70f98580ac06b93ef311e97b581690 100644 (file)
@@ -1011,7 +1011,7 @@ int nr_rx_frame(struct sk_buff *skb, struct net_device *dev)
        skb_queue_head(&sk->sk_receive_queue, skb);
 
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, skb->len);
+               sk->sk_data_ready(sk);
 
        bh_unlock_sock(sk);
 
index 158bdbf668ccf91fb211f49107d6b770d2fe98e4..921ace32d237143c14ac01d666830ddcae97535d 100644 (file)
@@ -966,7 +966,7 @@ static void nfc_llcp_recv_connect(struct nfc_llcp_local *local,
        new_sk->sk_state = LLCP_CONNECTED;
 
        /* Wake the listening processes */
-       parent->sk_data_ready(parent, 0);
+       parent->sk_data_ready(parent);
 
        /* Send CC */
        nfc_llcp_send_cc(new_sock);
index e3711c8b7bc5cbc5b85f5f2dec00d24c56fd0295..554b00cba5e7d0bc270a25f3d2c9f5dd8ff95205 100644 (file)
@@ -1720,7 +1720,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
        skb->dropcount = atomic_read(&sk->sk_drops);
        __skb_queue_tail(&sk->sk_receive_queue, skb);
        spin_unlock(&sk->sk_receive_queue.lock);
-       sk->sk_data_ready(sk, skb->len);
+       sk->sk_data_ready(sk);
        return 0;
 
 drop_n_acct:
@@ -1927,7 +1927,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev,
        else
                prb_clear_blk_fill_status(&po->rx_ring);
 
-       sk->sk_data_ready(sk, 0);
+       sk->sk_data_ready(sk);
 
 drop_n_restore:
        if (skb_head != skb->data && skb_shared(skb)) {
@@ -1942,7 +1942,7 @@ ring_is_full:
        po->stats.stats1.tp_drops++;
        spin_unlock(&sk->sk_receive_queue.lock);
 
-       sk->sk_data_ready(sk, 0);
+       sk->sk_data_ready(sk);
        kfree_skb(copy_skb);
        goto drop_n_restore;
 }
index a2fba7edfd1f433546a65b5ae386d97b80e16caa..66dc65e7c6a1079d09f63c6caa3de115cc22bc54 100644 (file)
@@ -37,7 +37,7 @@
 struct gprs_dev {
        struct sock             *sk;
        void                    (*old_state_change)(struct sock *);
-       void                    (*old_data_ready)(struct sock *, int);
+       void                    (*old_data_ready)(struct sock *);
        void                    (*old_write_space)(struct sock *);
 
        struct net_device       *dev;
@@ -146,7 +146,7 @@ drop:
        return err;
 }
 
-static void gprs_data_ready(struct sock *sk, int len)
+static void gprs_data_ready(struct sock *sk)
 {
        struct gprs_dev *gp = sk->sk_user_data;
        struct sk_buff *skb;
index e77411735de8e53f516e9b735c7966485af56470..70a547ea51777784fdd545b4c86d7da69991a53a 100644 (file)
@@ -462,10 +462,9 @@ out:
 queue:
        skb->dev = NULL;
        skb_set_owner_r(skb, sk);
-       err = skb->len;
        skb_queue_tail(queue, skb);
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, err);
+               sk->sk_data_ready(sk);
        return NET_RX_SUCCESS;
 }
 
@@ -587,10 +586,9 @@ static int pipe_handler_do_rcv(struct sock *sk, struct sk_buff *skb)
                pn->rx_credits--;
                skb->dev = NULL;
                skb_set_owner_r(skb, sk);
-               err = skb->len;
                skb_queue_tail(&sk->sk_receive_queue, skb);
                if (!sock_flag(sk, SOCK_DEAD))
-                       sk->sk_data_ready(sk, err);
+                       sk->sk_data_ready(sk);
                return NET_RX_SUCCESS;
 
        case PNS_PEP_CONNECT_RESP:
@@ -698,7 +696,7 @@ static int pep_do_rcv(struct sock *sk, struct sk_buff *skb)
                skb_queue_head(&sk->sk_receive_queue, skb);
                sk_acceptq_added(sk);
                if (!sock_flag(sk, SOCK_DEAD))
-                       sk->sk_data_ready(sk, 0);
+                       sk->sk_data_ready(sk);
                return NET_RX_SUCCESS;
 
        case PNS_PEP_DISCONNECT_REQ:
index 9cf2927d0021445f4e4e54f906b989e87c49f3f1..65637491f72857954207dc7fa974335110d44ef4 100644 (file)
@@ -61,12 +61,12 @@ void rds_tcp_state_change(struct sock *sk);
 /* tcp_listen.c */
 int rds_tcp_listen_init(void);
 void rds_tcp_listen_stop(void);
-void rds_tcp_listen_data_ready(struct sock *sk, int bytes);
+void rds_tcp_listen_data_ready(struct sock *sk);
 
 /* tcp_recv.c */
 int rds_tcp_recv_init(void);
 void rds_tcp_recv_exit(void);
-void rds_tcp_data_ready(struct sock *sk, int bytes);
+void rds_tcp_data_ready(struct sock *sk);
 int rds_tcp_recv(struct rds_connection *conn);
 void rds_tcp_inc_free(struct rds_incoming *inc);
 int rds_tcp_inc_copy_to_user(struct rds_incoming *inc, struct iovec *iov,
index 7787537e9c2e95fffbcc8f89d594fc6de6ad52fe..4e638f85118595d59c888917a9c3f072050c5780 100644 (file)
@@ -108,9 +108,9 @@ static void rds_tcp_accept_worker(struct work_struct *work)
                cond_resched();
 }
 
-void rds_tcp_listen_data_ready(struct sock *sk, int bytes)
+void rds_tcp_listen_data_ready(struct sock *sk)
 {
-       void (*ready)(struct sock *sk, int bytes);
+       void (*ready)(struct sock *sk);
 
        rdsdebug("listen data ready sk %p\n", sk);
 
@@ -132,7 +132,7 @@ void rds_tcp_listen_data_ready(struct sock *sk, int bytes)
 
 out:
        read_unlock(&sk->sk_callback_lock);
-       ready(sk, bytes);
+       ready(sk);
 }
 
 int rds_tcp_listen_init(void)
index 8b33d9967b56708d05d186aa6a2d37a38338a2ce..2dd88db4a1a2c2bbe382eaa9d08eaecb2bda2b72 100644 (file)
@@ -321,13 +321,13 @@ int rds_tcp_recv(struct rds_connection *conn)
        return ret;
 }
 
-void rds_tcp_data_ready(struct sock *sk, int bytes)
+void rds_tcp_data_ready(struct sock *sk)
 {
-       void (*ready)(struct sock *sk, int bytes);
+       void (*ready)(struct sock *sk);
        struct rds_connection *conn;
        struct rds_tcp_connection *tc;
 
-       rdsdebug("data ready sk %p bytes %d\n", sk, bytes);
+       rdsdebug("data ready sk %p\n", sk);
 
        read_lock(&sk->sk_callback_lock);
        conn = sk->sk_user_data;
@@ -344,7 +344,7 @@ void rds_tcp_data_ready(struct sock *sk, int bytes)
                queue_delayed_work(rds_wq, &conn->c_recv_w, 0);
 out:
        read_unlock(&sk->sk_callback_lock);
-       ready(sk, bytes);
+       ready(sk);
 }
 
 int rds_tcp_recv_init(void)
index 27e6896705e693e87b0b73c33cb70a2e163c528a..bf5a671ec2db335df676d26b68e67f0bac75557d 100644 (file)
@@ -1041,7 +1041,7 @@ int rose_rx_call_request(struct sk_buff *skb, struct net_device *dev, struct ros
        rose_start_heartbeat(make);
 
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, skb->len);
+               sk->sk_data_ready(sk);
 
        return 1;
 }
index 529572f18d1fa56b71a3154c9d822445fffef358..132de23834399738be9d3c487d7cdceabd84babd 100644 (file)
@@ -115,7 +115,7 @@ int rxrpc_queue_rcv_skb(struct rxrpc_call *call, struct sk_buff *skb,
                        spin_unlock_bh(&sk->sk_receive_queue.lock);
 
                        if (!sock_flag(sk, SOCK_DEAD))
-                               sk->sk_data_ready(sk, skb_len);
+                               sk->sk_data_ready(sk);
                }
                skb = NULL;
        } else {
@@ -668,7 +668,7 @@ static void rxrpc_post_packet_to_conn(struct rxrpc_connection *conn,
  * handle data received on the local endpoint
  * - may be called in interrupt context
  */
-void rxrpc_data_ready(struct sock *sk, int count)
+void rxrpc_data_ready(struct sock *sk)
 {
        struct rxrpc_connection *conn;
        struct rxrpc_transport *trans;
@@ -678,7 +678,7 @@ void rxrpc_data_ready(struct sock *sk, int count)
        struct sk_buff *skb;
        int ret;
 
-       _enter("%p, %d", sk, count);
+       _enter("%p", sk);
 
        ASSERT(!irqs_disabled());
 
index a693aca2ae2eb61a5c258fa21aa07b05e20c8e53..0424756723af013c2f97ec7800dafc0bd69258c0 100644 (file)
@@ -501,10 +501,9 @@ extern void rxrpc_UDP_error_handler(struct work_struct *);
 extern unsigned long rxrpc_ack_timeout;
 extern const char *rxrpc_pkts[];
 
-extern void rxrpc_data_ready(struct sock *, int);
-extern int rxrpc_queue_rcv_skb(struct rxrpc_call *, struct sk_buff *, bool,
-                              bool);
-extern void rxrpc_fast_process_packet(struct rxrpc_call *, struct sk_buff *);
+void rxrpc_data_ready(struct sock *);
+int rxrpc_queue_rcv_skb(struct rxrpc_call *, struct sk_buff *, bool, bool);
+void rxrpc_fast_process_packet(struct rxrpc_call *, struct sk_buff *);
 
 /*
  * ar-local.c
index aad82221bfc7b6da77bdd911500a6642ae3e8bbd..27498969162d042837c3032456a13672efcb6726 100644 (file)
@@ -6763,7 +6763,7 @@ do_nonblock:
        goto out;
 }
 
-void sctp_data_ready(struct sock *sk, int len)
+void sctp_data_ready(struct sock *sk)
 {
        struct socket_wq *wq;
 
index 04e3d470f877e51cc3238a3939595c1d90b83b37..3762a9b1e49ba1ca46be21f0b0de4d1e104aa84a 100644 (file)
@@ -266,7 +266,7 @@ int sctp_ulpq_tail_event(struct sctp_ulpq *ulpq, struct sctp_ulpevent *event)
                sctp_ulpq_clear_pd(ulpq);
 
        if (queue == &sk->sk_receive_queue)
-               sk->sk_data_ready(sk, 0);
+               sk->sk_data_ready(sk);
        return 1;
 
 out_free:
@@ -1141,5 +1141,5 @@ void sctp_ulpq_abort_pd(struct sctp_ulpq *ulpq, gfp_t gfp)
 
        /* If there is data waiting, send it up the socket now. */
        if (sctp_ulpq_clear_pd(ulpq) || ev)
-               sk->sk_data_ready(sk, 0);
+               sk->sk_data_ready(sk);
 }
index 5c62c5e89b4633524b173edcbe7f442597e6e9bb..5c24262f174203494517cecb95b0ba4e770a2854 100644 (file)
@@ -60,7 +60,7 @@
 
 static struct svc_sock *svc_setup_socket(struct svc_serv *, struct socket *,
                                         int flags);
-static void            svc_udp_data_ready(struct sock *, int);
+static void            svc_udp_data_ready(struct sock *);
 static int             svc_udp_recvfrom(struct svc_rqst *);
 static int             svc_udp_sendto(struct svc_rqst *);
 static void            svc_sock_detach(struct svc_xprt *);
@@ -401,14 +401,14 @@ static void svc_sock_setbufsize(struct socket *sock, unsigned int snd,
 /*
  * INET callback when data has been received on the socket.
  */
-static void svc_udp_data_ready(struct sock *sk, int count)
+static void svc_udp_data_ready(struct sock *sk)
 {
        struct svc_sock *svsk = (struct svc_sock *)sk->sk_user_data;
        wait_queue_head_t *wq = sk_sleep(sk);
 
        if (svsk) {
-               dprintk("svc: socket %p(inet %p), count=%d, busy=%d\n",
-                       svsk, sk, count,
+               dprintk("svc: socket %p(inet %p), busy=%d\n",
+                       svsk, sk,
                        test_bit(XPT_BUSY, &svsk->sk_xprt.xpt_flags));
                set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags);
                svc_xprt_enqueue(&svsk->sk_xprt);
@@ -730,7 +730,7 @@ static void svc_udp_init(struct svc_sock *svsk, struct svc_serv *serv)
  * A data_ready event on a listening socket means there's a connection
  * pending. Do not use state_change as a substitute for it.
  */
-static void svc_tcp_listen_data_ready(struct sock *sk, int count_unused)
+static void svc_tcp_listen_data_ready(struct sock *sk)
 {
        struct svc_sock *svsk = (struct svc_sock *)sk->sk_user_data;
        wait_queue_head_t *wq;
@@ -782,7 +782,7 @@ static void svc_tcp_state_change(struct sock *sk)
                wake_up_interruptible_all(wq);
 }
 
-static void svc_tcp_data_ready(struct sock *sk, int count)
+static void svc_tcp_data_ready(struct sock *sk)
 {
        struct svc_sock *svsk = (struct svc_sock *)sk->sk_user_data;
        wait_queue_head_t *wq = sk_sleep(sk);
index f3c2f2216c316594cea6c2c857e3af5b065599bf..8b2439fc4ba0389f764103173190bdebe7ce0b02 100644 (file)
@@ -252,7 +252,7 @@ struct sock_xprt {
        /*
         * Saved socket callback addresses
         */
-       void                    (*old_data_ready)(struct sock *, int);
+       void                    (*old_data_ready)(struct sock *);
        void                    (*old_state_change)(struct sock *);
        void                    (*old_write_space)(struct sock *);
 };
@@ -918,7 +918,7 @@ static int xs_local_copy_to_xdr(struct xdr_buf *xdr, struct sk_buff *skb)
  *
  * Currently this assumes we can read the whole reply in a single gulp.
  */
-static void xs_local_data_ready(struct sock *sk, int len)
+static void xs_local_data_ready(struct sock *sk)
 {
        struct rpc_task *task;
        struct rpc_xprt *xprt;
@@ -981,7 +981,7 @@ static void xs_local_data_ready(struct sock *sk, int len)
  * @len: how much data to read
  *
  */
-static void xs_udp_data_ready(struct sock *sk, int len)
+static void xs_udp_data_ready(struct sock *sk)
 {
        struct rpc_task *task;
        struct rpc_xprt *xprt;
@@ -1416,7 +1416,7 @@ static int xs_tcp_data_recv(read_descriptor_t *rd_desc, struct sk_buff *skb, uns
  * @bytes: how much data to read
  *
  */
-static void xs_tcp_data_ready(struct sock *sk, int bytes)
+static void xs_tcp_data_ready(struct sock *sk)
 {
        struct rpc_xprt *xprt;
        read_descriptor_t rd_desc;
index e0cb5edc6d1d9a62fc5262ae994c5c5eeb583f86..520fd82ffb9c8fead2d4f0c16840b63fec38deb1 100644 (file)
@@ -63,7 +63,7 @@ struct tipc_sock {
 static int backlog_rcv(struct sock *sk, struct sk_buff *skb);
 static u32 dispatch(struct tipc_port *tport, struct sk_buff *buf);
 static void wakeupdispatch(struct tipc_port *tport);
-static void tipc_data_ready(struct sock *sk, int len);
+static void tipc_data_ready(struct sock *sk);
 static void tipc_write_space(struct sock *sk);
 
 static const struct proto_ops packet_ops;
@@ -1127,7 +1127,7 @@ static void tipc_write_space(struct sock *sk)
  * @sk: socket
  * @len: the length of messages
  */
-static void tipc_data_ready(struct sock *sk, int len)
+static void tipc_data_ready(struct sock *sk)
 {
        struct socket_wq *wq;
 
@@ -1287,7 +1287,7 @@ static u32 filter_rcv(struct sock *sk, struct sk_buff *buf)
        __skb_queue_tail(&sk->sk_receive_queue, buf);
        skb_set_owner_r(buf, sk);
 
-       sk->sk_data_ready(sk, 0);
+       sk->sk_data_ready(sk);
        return TIPC_OK;
 }
 
index eda4533d5d477fe89d33e024a2ab54c042a9f2e8..33a18d447c0ac21d3bdf26c85abec3274ea788ff 100644 (file)
@@ -1337,7 +1337,7 @@ restart:
        __skb_queue_tail(&other->sk_receive_queue, skb);
        spin_unlock(&other->sk_receive_queue.lock);
        unix_state_unlock(other);
-       other->sk_data_ready(other, 0);
+       other->sk_data_ready(other);
        sock_put(other);
        return 0;
 
@@ -1759,7 +1759,7 @@ restart_locked:
        if (max_level > unix_sk(other)->recursion_level)
                unix_sk(other)->recursion_level = max_level;
        unix_state_unlock(other);
-       other->sk_data_ready(other, len);
+       other->sk_data_ready(other);
        sock_put(other);
        scm_destroy(siocb->scm);
        return len;
@@ -1867,7 +1867,7 @@ static int unix_stream_sendmsg(struct kiocb *kiocb, struct socket *sock,
                if (max_level > unix_sk(other)->recursion_level)
                        unix_sk(other)->recursion_level = max_level;
                unix_state_unlock(other);
-               other->sk_data_ready(other, size);
+               other->sk_data_ready(other);
                sent += size;
        }
 
index 9a730744e7bcf7fd1a0d79963666e32494be773c..9b7f207f2bee08770675f603a2ac20926937f06c 100644 (file)
@@ -315,7 +315,7 @@ vmci_transport_handle_wrote(struct sock *sk,
        struct vsock_sock *vsk = vsock_sk(sk);
        PKT_FIELD(vsk, sent_waiting_read) = false;
 #endif
-       sk->sk_data_ready(sk, 0);
+       sk->sk_data_ready(sk);
 }
 
 static void vmci_transport_notify_pkt_socket_init(struct sock *sk)
index 622bd7aa10160ef4434eb3b462f51c347df34c47..dc9c7929a2f959f533e198c6e0c178571f2abd9d 100644 (file)
@@ -92,7 +92,7 @@ vmci_transport_handle_wrote(struct sock *sk,
                            bool bottom_half,
                            struct sockaddr_vm *dst, struct sockaddr_vm *src)
 {
-       sk->sk_data_ready(sk, 0);
+       sk->sk_data_ready(sk);
 }
 
 static void vsock_block_update_write_window(struct sock *sk)
@@ -290,7 +290,7 @@ vmci_transport_notify_pkt_recv_post_dequeue(
                /* See the comment in
                 * vmci_transport_notify_pkt_send_post_enqueue().
                 */
-               sk->sk_data_ready(sk, 0);
+               sk->sk_data_ready(sk);
        }
 
        return err;
index f96af3b9632239180e04f936a8a8fc59250b4020..b1029973694394384c853559550ade797eadcdb1 100644 (file)
@@ -1062,7 +1062,7 @@ int x25_rx_call_request(struct sk_buff *skb, struct x25_neigh *nb,
        x25_start_heartbeat(make);
 
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, skb->len);
+               sk->sk_data_ready(sk);
        rc = 1;
        sock_put(sk);
 out:
index a49cd4ec551a58f7a6b8bdcdaeb2da273687196a..9e533fe594e060b93f445a64b09f484331fa14d1 100644 (file)
@@ -77,7 +77,7 @@ static int x25_queue_rx_frame(struct sock *sk, struct sk_buff *skb, int more)
        skb_set_owner_r(skbn, sk);
        skb_queue_tail(&sk->sk_receive_queue, skbn);
        if (!sock_flag(sk, SOCK_DEAD))
-               sk->sk_data_ready(sk, skbn->len);
+               sk->sk_data_ready(sk);
 
        return 0;
 }