net: remove noblock parameter from skb_recv_datagram()
authorOliver Hartkopp <socketcan@hartkopp.net>
Mon, 4 Apr 2022 16:30:22 +0000 (18:30 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 6 Apr 2022 12:45:26 +0000 (13:45 +0100)
skb_recv_datagram() has two parameters 'flags' and 'noblock' that are
merged inside skb_recv_datagram() by 'flags | (noblock ? MSG_DONTWAIT : 0)'

As 'flags' may contain MSG_DONTWAIT as value most callers split the 'flags'
into 'flags' and 'noblock' with finally obsolete bit operations like this:

skb_recv_datagram(sk, flags & ~MSG_DONTWAIT, flags & MSG_DONTWAIT, &rc);

And this is not even done consistently with the 'flags' parameter.

This patch removes the obsolete and costly splitting into two parameters
and only performs bit operations when really needed on the caller side.

One missing conversion thankfully reported by kernel test robot. I missed
to enable kunit tests to build the mctp code.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
37 files changed:
drivers/isdn/mISDN/socket.c
drivers/net/ppp/pppoe.c
include/linux/skbuff.h
net/appletalk/ddp.c
net/atm/common.c
net/ax25/af_ax25.c
net/bluetooth/af_bluetooth.c
net/bluetooth/hci_sock.c
net/caif/caif_socket.c
net/can/bcm.c
net/can/isotp.c
net/can/j1939/socket.c
net/can/raw.c
net/core/datagram.c
net/ieee802154/socket.c
net/ipv4/ping.c
net/ipv4/raw.c
net/ipv6/raw.c
net/iucv/af_iucv.c
net/key/af_key.c
net/l2tp/l2tp_ip.c
net/l2tp/l2tp_ip6.c
net/l2tp/l2tp_ppp.c
net/mctp/af_mctp.c
net/mctp/test/route-test.c
net/netlink/af_netlink.c
net/netrom/af_netrom.c
net/nfc/llcp_sock.c
net/nfc/rawsock.c
net/packet/af_packet.c
net/phonet/datagram.c
net/phonet/pep.c
net/qrtr/af_qrtr.c
net/rose/af_rose.c
net/unix/af_unix.c
net/vmw_vsock/vmci_transport.c
net/x25/af_x25.c

index a6606736d8c5033aeccf48d2692e63832796a9fc..2776ca5fc33f39019062b3d9fb8f02547a5e4139 100644 (file)
@@ -121,7 +121,7 @@ mISDN_sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
        if (sk->sk_state == MISDN_CLOSED)
                return 0;
 
-       skb = skb_recv_datagram(sk, flags, flags & MSG_DONTWAIT, &err);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (!skb)
                return err;
 
index 3619520340b746faba44a5dd86ef2bea9665b178..1b41cd9732d775d66988177d1a799d8ebe63c159 100644 (file)
@@ -1011,8 +1011,7 @@ static int pppoe_recvmsg(struct socket *sock, struct msghdr *m,
                goto end;
        }
 
-       skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
-                               flags & MSG_DONTWAIT, &error);
+       skb = skb_recv_datagram(sk, flags, &error);
        if (error < 0)
                goto end;
 
index 3a30cae8b0a55da8657b060bdddee6ad9e853f66..2394441fa3dd5e256e66ca2d424f30b0a47263ae 100644 (file)
@@ -3836,8 +3836,7 @@ struct sk_buff *__skb_try_recv_datagram(struct sock *sk,
 struct sk_buff *__skb_recv_datagram(struct sock *sk,
                                    struct sk_buff_head *sk_queue,
                                    unsigned int flags, int *off, int *err);
-struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock,
-                                 int *err);
+struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned int flags, int *err);
 __poll_t datagram_poll(struct file *file, struct socket *sock,
                           struct poll_table_struct *wait);
 int skb_copy_datagram_iter(const struct sk_buff *from, int offset,
index bf5736c1d4584ec977586eae44d36db0042f7132..a06f4d4a6f476a651abe9c1ad67eac0cb8a0264f 100644 (file)
@@ -1753,8 +1753,7 @@ static int atalk_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
        int err = 0;
        struct sk_buff *skb;
 
-       skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
-                                               flags & MSG_DONTWAIT, &err);
+       skb = skb_recv_datagram(sk, flags, &err);
        lock_sock(sk);
 
        if (!skb)
index 1cfa9bf1d18713afc7191ddecb256bfb3844154e..d0c8ab7ff8f6a8eaef31d2626739f3225ac59ad5 100644 (file)
@@ -540,7 +540,7 @@ int vcc_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
            !test_bit(ATM_VF_READY, &vcc->flags))
                return 0;
 
-       skb = skb_recv_datagram(sk, flags, flags & MSG_DONTWAIT, &error);
+       skb = skb_recv_datagram(sk, flags, &error);
        if (!skb)
                return error;
 
index 363d47f9453240477530d1adaf41a05a5e043ffc..116481e4da8283fdc37a0b5cc2b5e92c5022ea36 100644 (file)
@@ -1669,8 +1669,7 @@ static int ax25_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
        }
 
        /* Now we can treat all alike */
-       skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
-                               flags & MSG_DONTWAIT, &err);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (skb == NULL)
                goto out;
 
index a0cb2e3da8d4c05b5c0198da2dce3c270109ce26..62705734343b61a03c1669286d6adc4bf2856ec4 100644 (file)
@@ -251,7 +251,6 @@ EXPORT_SYMBOL(bt_accept_dequeue);
 int bt_sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
                    int flags)
 {
-       int noblock = flags & MSG_DONTWAIT;
        struct sock *sk = sock->sk;
        struct sk_buff *skb;
        size_t copied;
@@ -263,7 +262,7 @@ int bt_sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
        if (flags & MSG_OOB)
                return -EOPNOTSUPP;
 
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (!skb) {
                if (sk->sk_shutdown & RCV_SHUTDOWN)
                        return 0;
index 33b3c0ffc3399dbb6eab07a7b378b9441647116d..189e3115c8c62c947872d62b8b0744d8b96d8620 100644 (file)
@@ -1453,7 +1453,6 @@ static void hci_sock_cmsg(struct sock *sk, struct msghdr *msg,
 static int hci_sock_recvmsg(struct socket *sock, struct msghdr *msg,
                            size_t len, int flags)
 {
-       int noblock = flags & MSG_DONTWAIT;
        struct sock *sk = sock->sk;
        struct sk_buff *skb;
        int copied, err;
@@ -1470,7 +1469,7 @@ static int hci_sock_recvmsg(struct socket *sock, struct msghdr *msg,
        if (sk->sk_state == BT_CLOSED)
                return 0;
 
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (!skb)
                return err;
 
index 2b8892d502f7f67fd140c5b40da28b749359fb4d..251e666ba9a28d0f4f480995dec252592d481b97 100644 (file)
@@ -282,7 +282,7 @@ static int caif_seqpkt_recvmsg(struct socket *sock, struct msghdr *m,
        if (flags & MSG_OOB)
                goto read_error;
 
-       skb = skb_recv_datagram(sk, flags, 0 , &ret);
+       skb = skb_recv_datagram(sk, flags, &ret);
        if (!skb)
                goto read_error;
        copylen = skb->len;
index 95d209b52e6a6df1b3df9504afc2c486c8271961..64c07e650bb412cf11ebb4a9cdcefa00f4e9fcc8 100644 (file)
@@ -1632,12 +1632,9 @@ static int bcm_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
        struct sock *sk = sock->sk;
        struct sk_buff *skb;
        int error = 0;
-       int noblock;
        int err;
 
-       noblock =  flags & MSG_DONTWAIT;
-       flags   &= ~MSG_DONTWAIT;
-       skb = skb_recv_datagram(sk, flags, noblock, &error);
+       skb = skb_recv_datagram(sk, flags, &error);
        if (!skb)
                return error;
 
index bafb0fb5f0e0ece5f8130676096381fdafc76792..02d81effaa54996774c97a9c26e4fbaf46c9884c 100644 (file)
@@ -1047,7 +1047,6 @@ static int isotp_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
        struct sock *sk = sock->sk;
        struct sk_buff *skb;
        struct isotp_sock *so = isotp_sk(sk);
-       int noblock = flags & MSG_DONTWAIT;
        int ret = 0;
 
        if (flags & ~(MSG_DONTWAIT | MSG_TRUNC | MSG_PEEK))
@@ -1056,8 +1055,7 @@ static int isotp_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
        if (!so->bound)
                return -EADDRNOTAVAIL;
 
-       flags &= ~MSG_DONTWAIT;
-       skb = skb_recv_datagram(sk, flags, noblock, &ret);
+       skb = skb_recv_datagram(sk, flags, &ret);
        if (!skb)
                return ret;
 
index 6dff4510687a49791a4e6c01f3f5fe12669d8153..0bb4fd3f6264d64b5872baa35f8c2535fe22eaa5 100644 (file)
@@ -802,7 +802,7 @@ static int j1939_sk_recvmsg(struct socket *sock, struct msghdr *msg,
                return sock_recv_errqueue(sock->sk, msg, size, SOL_CAN_J1939,
                                          SCM_J1939_ERRQUEUE);
 
-       skb = skb_recv_datagram(sk, flags, 0, &ret);
+       skb = skb_recv_datagram(sk, flags, &ret);
        if (!skb)
                return ret;
 
index 7105fa4824e4b4f48b30186828126c59fd5f2938..0cf728dcff36f1f75dfb6f97943a15f8e4f5fb45 100644 (file)
@@ -846,16 +846,12 @@ static int raw_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
        struct sock *sk = sock->sk;
        struct sk_buff *skb;
        int err = 0;
-       int noblock;
-
-       noblock = flags & MSG_DONTWAIT;
-       flags &= ~MSG_DONTWAIT;
 
        if (flags & MSG_ERRQUEUE)
                return sock_recv_errqueue(sk, msg, size,
                                          SOL_CAN_RAW, SCM_CAN_RAW_ERRQUEUE);
 
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (!skb)
                return err;
 
index ee290776c661d02fd65aaa38ed9d5b5c2b6bb946..70126d15ca6e0cba07675d3441da277b0ee48660 100644 (file)
@@ -310,12 +310,11 @@ struct sk_buff *__skb_recv_datagram(struct sock *sk,
 EXPORT_SYMBOL(__skb_recv_datagram);
 
 struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned int flags,
-                                 int noblock, int *err)
+                                 int *err)
 {
        int off = 0;
 
-       return __skb_recv_datagram(sk, &sk->sk_receive_queue,
-                                  flags | (noblock ? MSG_DONTWAIT : 0),
+       return __skb_recv_datagram(sk, &sk->sk_receive_queue, flags,
                                   &off, err);
 }
 EXPORT_SYMBOL(skb_recv_datagram);
index 3b2366a88c3ccbae787669c58a2827048aa4552c..a725dd9bbda8bc66a1c65182ac9b707d62ac1152 100644 (file)
@@ -314,7 +314,8 @@ static int raw_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
        int err = -EOPNOTSUPP;
        struct sk_buff *skb;
 
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
+       flags |= (noblock ? MSG_DONTWAIT : 0);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (!skb)
                goto out;
 
@@ -703,7 +704,8 @@ static int dgram_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
        struct dgram_sock *ro = dgram_sk(sk);
        DECLARE_SOCKADDR(struct sockaddr_ieee802154 *, saddr, msg->msg_name);
 
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
+       flags |= (noblock ? MSG_DONTWAIT : 0);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (!skb)
                goto out;
 
index 3ee947557b88358e31afce995b3f157b0c41c0f8..550dc5c795c05a5dc20ef0aa7e6171b988c724c6 100644 (file)
@@ -861,7 +861,8 @@ int ping_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int noblock,
        if (flags & MSG_ERRQUEUE)
                return inet_recv_error(sk, msg, len, addr_len);
 
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
+       flags |= (noblock ? MSG_DONTWAIT : 0);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (!skb)
                goto out;
 
index 9f97b9cbf7b37e41648cbc98fb994adeb63f43cb..c9dd9603f2e733873109ddf1d7a23695b0bca100 100644 (file)
@@ -769,7 +769,8 @@ static int raw_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
                goto out;
        }
 
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
+       flags |= (noblock ? MSG_DONTWAIT : 0);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (!skb)
                goto out;
 
index c51d5ce3711c2e61e9ea2c1b22cb5ec4ee95ae7b..8bb41f3b246a9728dd6e738b76389a9cf8b56097 100644 (file)
@@ -477,7 +477,8 @@ static int rawv6_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
        if (np->rxpmtu && np->rxopt.bits.rxpmtu)
                return ipv6_recv_rxpmtu(sk, msg, len, addr_len);
 
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
+       flags |= (noblock ? MSG_DONTWAIT : 0);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (!skb)
                goto out;
 
index a1760add5bf1e758975aba33a051b8cf1542c6dd..a0385ddbffcfc775b74768d5a889fcf7cbec1ee8 100644 (file)
@@ -1223,7 +1223,6 @@ static void iucv_process_message_q(struct sock *sk)
 static int iucv_sock_recvmsg(struct socket *sock, struct msghdr *msg,
                             size_t len, int flags)
 {
-       int noblock = flags & MSG_DONTWAIT;
        struct sock *sk = sock->sk;
        struct iucv_sock *iucv = iucv_sk(sk);
        unsigned int copied, rlen;
@@ -1242,7 +1241,7 @@ static int iucv_sock_recvmsg(struct socket *sock, struct msghdr *msg,
 
        /* receive/dequeue next skb:
         * the function understands MSG_PEEK and, thus, does not dequeue skb */
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (!skb) {
                if (sk->sk_shutdown & RCV_SHUTDOWN)
                        return 0;
index fd51db3be91c4064b3f7b5a6f8297e2a9c0843de..d09ec26b1081e636a17bc1ed0d6f1eefe3a269e3 100644 (file)
@@ -3696,7 +3696,7 @@ static int pfkey_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
        if (flags & ~(MSG_PEEK|MSG_DONTWAIT|MSG_TRUNC|MSG_CMSG_COMPAT))
                goto out;
 
-       skb = skb_recv_datagram(sk, flags, flags & MSG_DONTWAIT, &err);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (skb == NULL)
                goto out;
 
index b3edafa5fba4a3cc8b01b5a66e37ee198f31eea1..c6a5cc2d88e72d02cf82d07fa683983f8cac4552 100644 (file)
@@ -526,7 +526,8 @@ static int l2tp_ip_recvmsg(struct sock *sk, struct msghdr *msg,
        if (flags & MSG_OOB)
                goto out;
 
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
+       flags |= (noblock ? MSG_DONTWAIT : 0);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (!skb)
                goto out;
 
index 96f975777438f7f03614dbfa0c1a978822b0687b..97fde8a9209bb9817a87520f28baf0760c172974 100644 (file)
@@ -671,7 +671,8 @@ static int l2tp_ip6_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
        if (flags & MSG_ERRQUEUE)
                return ipv6_recv_error(sk, msg, len, addr_len);
 
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
+       flags |= (noblock ? MSG_DONTWAIT : 0);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (!skb)
                goto out;
 
index bf35710127dd082370ecdaecdd9edff7315f3b8f..8be1fdc68a0bbdc8ee6ef1186f278dc6badd325a 100644 (file)
@@ -191,8 +191,7 @@ static int pppol2tp_recvmsg(struct socket *sock, struct msghdr *msg,
                goto end;
 
        err = 0;
-       skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
-                               flags & MSG_DONTWAIT, &err);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (!skb)
                goto end;
 
index f0702d920d8d57c2361bd379e3030a7f2c26d18c..5f204eb8abd20d2c83b05db9e313ad339ceedb55 100644 (file)
@@ -196,7 +196,7 @@ static int mctp_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
        if (flags & ~(MSG_DONTWAIT | MSG_TRUNC | MSG_PEEK))
                return -EOPNOTSUPP;
 
-       skb = skb_recv_datagram(sk, flags, flags & MSG_DONTWAIT, &rc);
+       skb = skb_recv_datagram(sk, flags, &rc);
        if (!skb)
                return rc;
 
index 61205cf4007465a01c2d7b3def1c413a5666df35..24df29e135ed6fbfc1637b7ab87822d19d20527b 100644 (file)
@@ -352,7 +352,7 @@ static void mctp_test_route_input_sk(struct kunit *test)
        if (params->deliver) {
                KUNIT_EXPECT_EQ(test, rc, 0);
 
-               skb2 = skb_recv_datagram(sock->sk, 0, 1, &rc);
+               skb2 = skb_recv_datagram(sock->sk, MSG_DONTWAIT, &rc);
                KUNIT_EXPECT_NOT_ERR_OR_NULL(test, skb2);
                KUNIT_EXPECT_EQ(test, skb->len, 1);
 
@@ -360,7 +360,7 @@ static void mctp_test_route_input_sk(struct kunit *test)
 
        } else {
                KUNIT_EXPECT_NE(test, rc, 0);
-               skb2 = skb_recv_datagram(sock->sk, 0, 1, &rc);
+               skb2 = skb_recv_datagram(sock->sk, MSG_DONTWAIT, &rc);
                KUNIT_EXPECT_PTR_EQ(test, skb2, NULL);
        }
 
@@ -423,7 +423,7 @@ static void mctp_test_route_input_sk_reasm(struct kunit *test)
                rc = mctp_route_input(&rt->rt, skb);
        }
 
-       skb2 = skb_recv_datagram(sock->sk, 0, 1, &rc);
+       skb2 = skb_recv_datagram(sock->sk, MSG_DONTWAIT, &rc);
 
        if (params->rx_len) {
                KUNIT_EXPECT_NOT_ERR_OR_NULL(test, skb2);
@@ -582,7 +582,7 @@ static void mctp_test_route_input_sk_keys(struct kunit *test)
        rc = mctp_route_input(&rt->rt, skb);
 
        /* (potentially) receive message */
-       skb2 = skb_recv_datagram(sock->sk, 0, 1, &rc);
+       skb2 = skb_recv_datagram(sock->sk, MSG_DONTWAIT, &rc);
 
        if (params->deliver)
                KUNIT_EXPECT_NOT_ERR_OR_NULL(test, skb2);
index 47a876ccd28816a6065d1c4b7de8cfc97e887a69..9fa85bb36c0ed75ddb97a5df390ccc37df7aff13 100644 (file)
@@ -1931,7 +1931,6 @@ static int netlink_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
        struct scm_cookie scm;
        struct sock *sk = sock->sk;
        struct netlink_sock *nlk = nlk_sk(sk);
-       int noblock = flags & MSG_DONTWAIT;
        size_t copied;
        struct sk_buff *skb, *data_skb;
        int err, ret;
@@ -1941,7 +1940,7 @@ static int netlink_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
 
        copied = 0;
 
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (skb == NULL)
                goto out;
 
index fa9dc2ba39418b06bd1915e05dd8f2af5ec00ca2..6f7f4392cffb1bd382a89ebe925a7cad2d730b44 100644 (file)
@@ -1159,7 +1159,8 @@ static int nr_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
        }
 
        /* Now we can treat all alike */
-       if ((skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT, flags & MSG_DONTWAIT, &er)) == NULL) {
+       skb = skb_recv_datagram(sk, flags, &er);
+       if (!skb) {
                release_sock(sk);
                return er;
        }
index 4ca35791c93b734f0b1bc32a82bfca1c9b3740ed..77642d18a3b437ea3c733fadce93ec463a900498 100644 (file)
@@ -821,7 +821,6 @@ static int llcp_sock_sendmsg(struct socket *sock, struct msghdr *msg,
 static int llcp_sock_recvmsg(struct socket *sock, struct msghdr *msg,
                             size_t len, int flags)
 {
-       int noblock = flags & MSG_DONTWAIT;
        struct sock *sk = sock->sk;
        unsigned int copied, rlen;
        struct sk_buff *skb, *cskb;
@@ -842,7 +841,7 @@ static int llcp_sock_recvmsg(struct socket *sock, struct msghdr *msg,
        if (flags & (MSG_OOB))
                return -EOPNOTSUPP;
 
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
+       skb = skb_recv_datagram(sk, flags, &err);
        if (!skb) {
                pr_err("Recv datagram failed state %d %d %d",
                       sk->sk_state, err, sock_error(sk));
index 0ca214ab5aeff97f7bdc166537c4aafe37dd807f..8dd569765f96e9c5ff851515dc5f2823dfa804f2 100644 (file)
@@ -238,7 +238,6 @@ static int rawsock_sendmsg(struct socket *sock, struct msghdr *msg, size_t len)
 static int rawsock_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
                           int flags)
 {
-       int noblock = flags & MSG_DONTWAIT;
        struct sock *sk = sock->sk;
        struct sk_buff *skb;
        int copied;
@@ -246,7 +245,7 @@ static int rawsock_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
 
        pr_debug("sock=%p sk=%p len=%zu flags=%d\n", sock, sk, len, flags);
 
-       skb = skb_recv_datagram(sk, flags, noblock, &rc);
+       skb = skb_recv_datagram(sk, flags, &rc);
        if (!skb)
                return rc;
 
index c39c09899fd0e1c5e7572eda554752e76c481aff..d3caaf4d4b3efb09d1486d68af494ce021155e1b 100644 (file)
@@ -3421,7 +3421,7 @@ static int packet_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
         *      but then it will block.
         */
 
-       skb = skb_recv_datagram(sk, flags, flags & MSG_DONTWAIT, &err);
+       skb = skb_recv_datagram(sk, flags, &err);
 
        /*
         *      An error occurred so return it. Because skb_recv_datagram()
index 393e6aa7a5927d4b8ef61a35d99d41c4cad8c815..3f2e62b63dd4293a11ba88ca294050829461361a 100644 (file)
@@ -123,7 +123,8 @@ static int pn_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
                        MSG_CMSG_COMPAT))
                goto out_nofree;
 
-       skb = skb_recv_datagram(sk, flags, noblock, &rval);
+       flags |= (noblock ? MSG_DONTWAIT : 0);
+       skb = skb_recv_datagram(sk, flags, &rval);
        if (skb == NULL)
                goto out_nofree;
 
index 65d463ad87707782a44152014fa760798554145f..441a267065923bcd80e7fef8536976c9c8a8c515 100644 (file)
@@ -772,7 +772,8 @@ static struct sock *pep_sock_accept(struct sock *sk, int flags, int *errp,
        u8 pipe_handle, enabled, n_sb;
        u8 aligned = 0;
 
-       skb = skb_recv_datagram(sk, 0, flags & O_NONBLOCK, errp);
+       skb = skb_recv_datagram(sk, (flags & O_NONBLOCK) ? MSG_DONTWAIT : 0,
+                               errp);
        if (!skb)
                return NULL;
 
@@ -1267,7 +1268,8 @@ static int pep_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
                        return -EINVAL;
        }
 
-       skb = skb_recv_datagram(sk, flags, noblock, &err);
+       flags |= (noblock ? MSG_DONTWAIT : 0);
+       skb = skb_recv_datagram(sk, flags, &err);
        lock_sock(sk);
        if (skb == NULL) {
                if (err == -ENOTCONN && sk->sk_state == TCP_CLOSE_WAIT)
index ec2322529727820d60e1fa13e1422d6ed8431608..5c2fb992803b7acbeed3d712104d45d7e0b3c68f 100644 (file)
@@ -1035,8 +1035,7 @@ static int qrtr_recvmsg(struct socket *sock, struct msghdr *msg,
                return -EADDRNOTAVAIL;
        }
 
-       skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
-                               flags & MSG_DONTWAIT, &rc);
+       skb = skb_recv_datagram(sk, flags, &rc);
        if (!skb) {
                release_sock(sk);
                return rc;
index 30a1cf4c16c6737d2acc587eadb853274caf5219..bf2d986a6bc392a9d830b1dfa7fbaa3bca969aa3 100644 (file)
@@ -1230,7 +1230,8 @@ static int rose_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
                return -ENOTCONN;
 
        /* Now we can treat all alike */
-       if ((skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT, flags & MSG_DONTWAIT, &er)) == NULL)
+       skb = skb_recv_datagram(sk, flags, &er);
+       if (!skb)
                return er;
 
        qbit = (skb->data[0] & ROSE_Q_BIT) == ROSE_Q_BIT;
index e71a312faa1e2ef856c027e1f55f4b79a34246ae..fecbd95da9185eac29ee8cdd0e0a0e6520b4a0ce 100644 (file)
@@ -1643,7 +1643,8 @@ static int unix_accept(struct socket *sock, struct socket *newsock, int flags,
         * so that no locks are necessary.
         */
 
-       skb = skb_recv_datagram(sk, 0, flags&O_NONBLOCK, &err);
+       skb = skb_recv_datagram(sk, (flags & O_NONBLOCK) ? MSG_DONTWAIT : 0,
+                               &err);
        if (!skb) {
                /* This means receive shutdown. */
                if (err == 0)
@@ -2500,7 +2501,7 @@ static int unix_read_sock(struct sock *sk, read_descriptor_t *desc,
                int used, err;
 
                mutex_lock(&u->iolock);
-               skb = skb_recv_datagram(sk, 0, 1, &err);
+               skb = skb_recv_datagram(sk, MSG_DONTWAIT, &err);
                mutex_unlock(&u->iolock);
                if (!skb)
                        return err;
index b17dc9745188e4f1840881209017a23f00c65af9..b14f0ed7427bc4f35307fc28de6e4908ae659448 100644 (file)
@@ -1732,19 +1732,16 @@ static int vmci_transport_dgram_dequeue(struct vsock_sock *vsk,
                                        int flags)
 {
        int err;
-       int noblock;
        struct vmci_datagram *dg;
        size_t payload_len;
        struct sk_buff *skb;
 
-       noblock = flags & MSG_DONTWAIT;
-
        if (flags & MSG_OOB || flags & MSG_ERRQUEUE)
                return -EOPNOTSUPP;
 
        /* Retrieve the head sk_buff from the socket's receive queue. */
        err = 0;
-       skb = skb_recv_datagram(&vsk->sk, flags, noblock, &err);
+       skb = skb_recv_datagram(&vsk->sk, flags, &err);
        if (!skb)
                return err;
 
index 3a171828638b1a01c4d76189b832a87843de5e4e..6bc2ac8d8146dcfe9dd7fdfe4f7031ca2ef54266 100644 (file)
@@ -1315,8 +1315,7 @@ static int x25_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
        } else {
                /* Now we can treat all alike */
                release_sock(sk);
-               skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
-                                       flags & MSG_DONTWAIT, &rc);
+               skb = skb_recv_datagram(sk, flags, &rc);
                lock_sock(sk);
                if (!skb)
                        goto out;