mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 13:41:51 +00:00
net: remove noblock parameter from skb_recv_datagram()
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>
This commit is contained in:
parent
0b5c21bbc0
commit
f4b41f062c
@ -121,7 +121,7 @@ mISDN_sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
|
|||||||
if (sk->sk_state == MISDN_CLOSED)
|
if (sk->sk_state == MISDN_CLOSED)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags, flags & MSG_DONTWAIT, &err);
|
skb = skb_recv_datagram(sk, flags, &err);
|
||||||
if (!skb)
|
if (!skb)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
@ -1011,8 +1011,7 @@ static int pppoe_recvmsg(struct socket *sock, struct msghdr *m,
|
|||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
|
skb = skb_recv_datagram(sk, flags, &error);
|
||||||
flags & MSG_DONTWAIT, &error);
|
|
||||||
if (error < 0)
|
if (error < 0)
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
|
@ -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 *__skb_recv_datagram(struct sock *sk,
|
||||||
struct sk_buff_head *sk_queue,
|
struct sk_buff_head *sk_queue,
|
||||||
unsigned int flags, int *off, int *err);
|
unsigned int flags, int *off, int *err);
|
||||||
struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock,
|
struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned int flags, int *err);
|
||||||
int *err);
|
|
||||||
__poll_t datagram_poll(struct file *file, struct socket *sock,
|
__poll_t datagram_poll(struct file *file, struct socket *sock,
|
||||||
struct poll_table_struct *wait);
|
struct poll_table_struct *wait);
|
||||||
int skb_copy_datagram_iter(const struct sk_buff *from, int offset,
|
int skb_copy_datagram_iter(const struct sk_buff *from, int offset,
|
||||||
|
@ -1753,8 +1753,7 @@ static int atalk_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
|
|||||||
int err = 0;
|
int err = 0;
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
|
skb = skb_recv_datagram(sk, flags, &err);
|
||||||
flags & MSG_DONTWAIT, &err);
|
|
||||||
lock_sock(sk);
|
lock_sock(sk);
|
||||||
|
|
||||||
if (!skb)
|
if (!skb)
|
||||||
|
@ -540,7 +540,7 @@ int vcc_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
|
|||||||
!test_bit(ATM_VF_READY, &vcc->flags))
|
!test_bit(ATM_VF_READY, &vcc->flags))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags, flags & MSG_DONTWAIT, &error);
|
skb = skb_recv_datagram(sk, flags, &error);
|
||||||
if (!skb)
|
if (!skb)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
|
@ -1669,8 +1669,7 @@ static int ax25_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Now we can treat all alike */
|
/* Now we can treat all alike */
|
||||||
skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
|
skb = skb_recv_datagram(sk, flags, &err);
|
||||||
flags & MSG_DONTWAIT, &err);
|
|
||||||
if (skb == NULL)
|
if (skb == NULL)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -251,7 +251,6 @@ EXPORT_SYMBOL(bt_accept_dequeue);
|
|||||||
int bt_sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
|
int bt_sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
|
||||||
int flags)
|
int flags)
|
||||||
{
|
{
|
||||||
int noblock = flags & MSG_DONTWAIT;
|
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
size_t copied;
|
size_t copied;
|
||||||
@ -263,7 +262,7 @@ int bt_sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
|
|||||||
if (flags & MSG_OOB)
|
if (flags & MSG_OOB)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags, noblock, &err);
|
skb = skb_recv_datagram(sk, flags, &err);
|
||||||
if (!skb) {
|
if (!skb) {
|
||||||
if (sk->sk_shutdown & RCV_SHUTDOWN)
|
if (sk->sk_shutdown & RCV_SHUTDOWN)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -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,
|
static int hci_sock_recvmsg(struct socket *sock, struct msghdr *msg,
|
||||||
size_t len, int flags)
|
size_t len, int flags)
|
||||||
{
|
{
|
||||||
int noblock = flags & MSG_DONTWAIT;
|
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
int copied, err;
|
int copied, err;
|
||||||
@ -1470,7 +1469,7 @@ static int hci_sock_recvmsg(struct socket *sock, struct msghdr *msg,
|
|||||||
if (sk->sk_state == BT_CLOSED)
|
if (sk->sk_state == BT_CLOSED)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags, noblock, &err);
|
skb = skb_recv_datagram(sk, flags, &err);
|
||||||
if (!skb)
|
if (!skb)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
@ -282,7 +282,7 @@ static int caif_seqpkt_recvmsg(struct socket *sock, struct msghdr *m,
|
|||||||
if (flags & MSG_OOB)
|
if (flags & MSG_OOB)
|
||||||
goto read_error;
|
goto read_error;
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags, 0 , &ret);
|
skb = skb_recv_datagram(sk, flags, &ret);
|
||||||
if (!skb)
|
if (!skb)
|
||||||
goto read_error;
|
goto read_error;
|
||||||
copylen = skb->len;
|
copylen = skb->len;
|
||||||
|
@ -1632,12 +1632,9 @@ static int bcm_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
|
|||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
int error = 0;
|
int error = 0;
|
||||||
int noblock;
|
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
noblock = flags & MSG_DONTWAIT;
|
skb = skb_recv_datagram(sk, flags, &error);
|
||||||
flags &= ~MSG_DONTWAIT;
|
|
||||||
skb = skb_recv_datagram(sk, flags, noblock, &error);
|
|
||||||
if (!skb)
|
if (!skb)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
|
@ -1047,7 +1047,6 @@ static int isotp_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
|
|||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
struct isotp_sock *so = isotp_sk(sk);
|
struct isotp_sock *so = isotp_sk(sk);
|
||||||
int noblock = flags & MSG_DONTWAIT;
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (flags & ~(MSG_DONTWAIT | MSG_TRUNC | MSG_PEEK))
|
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)
|
if (!so->bound)
|
||||||
return -EADDRNOTAVAIL;
|
return -EADDRNOTAVAIL;
|
||||||
|
|
||||||
flags &= ~MSG_DONTWAIT;
|
skb = skb_recv_datagram(sk, flags, &ret);
|
||||||
skb = skb_recv_datagram(sk, flags, noblock, &ret);
|
|
||||||
if (!skb)
|
if (!skb)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -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,
|
return sock_recv_errqueue(sock->sk, msg, size, SOL_CAN_J1939,
|
||||||
SCM_J1939_ERRQUEUE);
|
SCM_J1939_ERRQUEUE);
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags, 0, &ret);
|
skb = skb_recv_datagram(sk, flags, &ret);
|
||||||
if (!skb)
|
if (!skb)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -846,16 +846,12 @@ static int raw_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
|
|||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
int noblock;
|
|
||||||
|
|
||||||
noblock = flags & MSG_DONTWAIT;
|
|
||||||
flags &= ~MSG_DONTWAIT;
|
|
||||||
|
|
||||||
if (flags & MSG_ERRQUEUE)
|
if (flags & MSG_ERRQUEUE)
|
||||||
return sock_recv_errqueue(sk, msg, size,
|
return sock_recv_errqueue(sk, msg, size,
|
||||||
SOL_CAN_RAW, SCM_CAN_RAW_ERRQUEUE);
|
SOL_CAN_RAW, SCM_CAN_RAW_ERRQUEUE);
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags, noblock, &err);
|
skb = skb_recv_datagram(sk, flags, &err);
|
||||||
if (!skb)
|
if (!skb)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
@ -310,12 +310,11 @@ struct sk_buff *__skb_recv_datagram(struct sock *sk,
|
|||||||
EXPORT_SYMBOL(__skb_recv_datagram);
|
EXPORT_SYMBOL(__skb_recv_datagram);
|
||||||
|
|
||||||
struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned int flags,
|
struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned int flags,
|
||||||
int noblock, int *err)
|
int *err)
|
||||||
{
|
{
|
||||||
int off = 0;
|
int off = 0;
|
||||||
|
|
||||||
return __skb_recv_datagram(sk, &sk->sk_receive_queue,
|
return __skb_recv_datagram(sk, &sk->sk_receive_queue, flags,
|
||||||
flags | (noblock ? MSG_DONTWAIT : 0),
|
|
||||||
&off, err);
|
&off, err);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(skb_recv_datagram);
|
EXPORT_SYMBOL(skb_recv_datagram);
|
||||||
|
@ -314,7 +314,8 @@ static int raw_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
|
|||||||
int err = -EOPNOTSUPP;
|
int err = -EOPNOTSUPP;
|
||||||
struct sk_buff *skb;
|
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)
|
if (!skb)
|
||||||
goto out;
|
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);
|
struct dgram_sock *ro = dgram_sk(sk);
|
||||||
DECLARE_SOCKADDR(struct sockaddr_ieee802154 *, saddr, msg->msg_name);
|
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)
|
if (!skb)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -861,7 +861,8 @@ int ping_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int noblock,
|
|||||||
if (flags & MSG_ERRQUEUE)
|
if (flags & MSG_ERRQUEUE)
|
||||||
return inet_recv_error(sk, msg, len, addr_len);
|
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)
|
if (!skb)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -769,7 +769,8 @@ static int raw_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags, noblock, &err);
|
flags |= (noblock ? MSG_DONTWAIT : 0);
|
||||||
|
skb = skb_recv_datagram(sk, flags, &err);
|
||||||
if (!skb)
|
if (!skb)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -477,7 +477,8 @@ static int rawv6_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
|
|||||||
if (np->rxpmtu && np->rxopt.bits.rxpmtu)
|
if (np->rxpmtu && np->rxopt.bits.rxpmtu)
|
||||||
return ipv6_recv_rxpmtu(sk, msg, len, addr_len);
|
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)
|
if (!skb)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -1223,7 +1223,6 @@ static void iucv_process_message_q(struct sock *sk)
|
|||||||
static int iucv_sock_recvmsg(struct socket *sock, struct msghdr *msg,
|
static int iucv_sock_recvmsg(struct socket *sock, struct msghdr *msg,
|
||||||
size_t len, int flags)
|
size_t len, int flags)
|
||||||
{
|
{
|
||||||
int noblock = flags & MSG_DONTWAIT;
|
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
struct iucv_sock *iucv = iucv_sk(sk);
|
struct iucv_sock *iucv = iucv_sk(sk);
|
||||||
unsigned int copied, rlen;
|
unsigned int copied, rlen;
|
||||||
@ -1242,7 +1241,7 @@ static int iucv_sock_recvmsg(struct socket *sock, struct msghdr *msg,
|
|||||||
|
|
||||||
/* receive/dequeue next skb:
|
/* receive/dequeue next skb:
|
||||||
* the function understands MSG_PEEK and, thus, does not dequeue 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 (!skb) {
|
||||||
if (sk->sk_shutdown & RCV_SHUTDOWN)
|
if (sk->sk_shutdown & RCV_SHUTDOWN)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -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))
|
if (flags & ~(MSG_PEEK|MSG_DONTWAIT|MSG_TRUNC|MSG_CMSG_COMPAT))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags, flags & MSG_DONTWAIT, &err);
|
skb = skb_recv_datagram(sk, flags, &err);
|
||||||
if (skb == NULL)
|
if (skb == NULL)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -526,7 +526,8 @@ static int l2tp_ip_recvmsg(struct sock *sk, struct msghdr *msg,
|
|||||||
if (flags & MSG_OOB)
|
if (flags & MSG_OOB)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags, noblock, &err);
|
flags |= (noblock ? MSG_DONTWAIT : 0);
|
||||||
|
skb = skb_recv_datagram(sk, flags, &err);
|
||||||
if (!skb)
|
if (!skb)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -671,7 +671,8 @@ static int l2tp_ip6_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
|
|||||||
if (flags & MSG_ERRQUEUE)
|
if (flags & MSG_ERRQUEUE)
|
||||||
return ipv6_recv_error(sk, msg, len, addr_len);
|
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)
|
if (!skb)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -191,8 +191,7 @@ static int pppol2tp_recvmsg(struct socket *sock, struct msghdr *msg,
|
|||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
err = 0;
|
err = 0;
|
||||||
skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
|
skb = skb_recv_datagram(sk, flags, &err);
|
||||||
flags & MSG_DONTWAIT, &err);
|
|
||||||
if (!skb)
|
if (!skb)
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
|
@ -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))
|
if (flags & ~(MSG_DONTWAIT | MSG_TRUNC | MSG_PEEK))
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags, flags & MSG_DONTWAIT, &rc);
|
skb = skb_recv_datagram(sk, flags, &rc);
|
||||||
if (!skb)
|
if (!skb)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
|
@ -352,7 +352,7 @@ static void mctp_test_route_input_sk(struct kunit *test)
|
|||||||
if (params->deliver) {
|
if (params->deliver) {
|
||||||
KUNIT_EXPECT_EQ(test, rc, 0);
|
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_NOT_ERR_OR_NULL(test, skb2);
|
||||||
KUNIT_EXPECT_EQ(test, skb->len, 1);
|
KUNIT_EXPECT_EQ(test, skb->len, 1);
|
||||||
|
|
||||||
@ -360,7 +360,7 @@ static void mctp_test_route_input_sk(struct kunit *test)
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
KUNIT_EXPECT_NE(test, rc, 0);
|
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);
|
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);
|
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) {
|
if (params->rx_len) {
|
||||||
KUNIT_EXPECT_NOT_ERR_OR_NULL(test, skb2);
|
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);
|
rc = mctp_route_input(&rt->rt, skb);
|
||||||
|
|
||||||
/* (potentially) receive message */
|
/* (potentially) receive message */
|
||||||
skb2 = skb_recv_datagram(sock->sk, 0, 1, &rc);
|
skb2 = skb_recv_datagram(sock->sk, MSG_DONTWAIT, &rc);
|
||||||
|
|
||||||
if (params->deliver)
|
if (params->deliver)
|
||||||
KUNIT_EXPECT_NOT_ERR_OR_NULL(test, skb2);
|
KUNIT_EXPECT_NOT_ERR_OR_NULL(test, skb2);
|
||||||
|
@ -1931,7 +1931,6 @@ static int netlink_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
|
|||||||
struct scm_cookie scm;
|
struct scm_cookie scm;
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
struct netlink_sock *nlk = nlk_sk(sk);
|
struct netlink_sock *nlk = nlk_sk(sk);
|
||||||
int noblock = flags & MSG_DONTWAIT;
|
|
||||||
size_t copied;
|
size_t copied;
|
||||||
struct sk_buff *skb, *data_skb;
|
struct sk_buff *skb, *data_skb;
|
||||||
int err, ret;
|
int err, ret;
|
||||||
@ -1941,7 +1940,7 @@ static int netlink_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
|
|||||||
|
|
||||||
copied = 0;
|
copied = 0;
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags, noblock, &err);
|
skb = skb_recv_datagram(sk, flags, &err);
|
||||||
if (skb == NULL)
|
if (skb == NULL)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -1159,7 +1159,8 @@ static int nr_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Now we can treat all alike */
|
/* 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);
|
release_sock(sk);
|
||||||
return er;
|
return er;
|
||||||
}
|
}
|
||||||
|
@ -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,
|
static int llcp_sock_recvmsg(struct socket *sock, struct msghdr *msg,
|
||||||
size_t len, int flags)
|
size_t len, int flags)
|
||||||
{
|
{
|
||||||
int noblock = flags & MSG_DONTWAIT;
|
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
unsigned int copied, rlen;
|
unsigned int copied, rlen;
|
||||||
struct sk_buff *skb, *cskb;
|
struct sk_buff *skb, *cskb;
|
||||||
@ -842,7 +841,7 @@ static int llcp_sock_recvmsg(struct socket *sock, struct msghdr *msg,
|
|||||||
if (flags & (MSG_OOB))
|
if (flags & (MSG_OOB))
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags, noblock, &err);
|
skb = skb_recv_datagram(sk, flags, &err);
|
||||||
if (!skb) {
|
if (!skb) {
|
||||||
pr_err("Recv datagram failed state %d %d %d",
|
pr_err("Recv datagram failed state %d %d %d",
|
||||||
sk->sk_state, err, sock_error(sk));
|
sk->sk_state, err, sock_error(sk));
|
||||||
|
@ -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,
|
static int rawsock_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
|
||||||
int flags)
|
int flags)
|
||||||
{
|
{
|
||||||
int noblock = flags & MSG_DONTWAIT;
|
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
int copied;
|
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);
|
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)
|
if (!skb)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
|
@ -3421,7 +3421,7 @@ static int packet_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
|
|||||||
* but then it will block.
|
* 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()
|
* An error occurred so return it. Because skb_recv_datagram()
|
||||||
|
@ -123,7 +123,8 @@ static int pn_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
|
|||||||
MSG_CMSG_COMPAT))
|
MSG_CMSG_COMPAT))
|
||||||
goto out_nofree;
|
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)
|
if (skb == NULL)
|
||||||
goto out_nofree;
|
goto out_nofree;
|
||||||
|
|
||||||
|
@ -772,7 +772,8 @@ static struct sock *pep_sock_accept(struct sock *sk, int flags, int *errp,
|
|||||||
u8 pipe_handle, enabled, n_sb;
|
u8 pipe_handle, enabled, n_sb;
|
||||||
u8 aligned = 0;
|
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)
|
if (!skb)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -1267,7 +1268,8 @@ static int pep_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
|
|||||||
return -EINVAL;
|
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);
|
lock_sock(sk);
|
||||||
if (skb == NULL) {
|
if (skb == NULL) {
|
||||||
if (err == -ENOTCONN && sk->sk_state == TCP_CLOSE_WAIT)
|
if (err == -ENOTCONN && sk->sk_state == TCP_CLOSE_WAIT)
|
||||||
|
@ -1035,8 +1035,7 @@ static int qrtr_recvmsg(struct socket *sock, struct msghdr *msg,
|
|||||||
return -EADDRNOTAVAIL;
|
return -EADDRNOTAVAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
|
skb = skb_recv_datagram(sk, flags, &rc);
|
||||||
flags & MSG_DONTWAIT, &rc);
|
|
||||||
if (!skb) {
|
if (!skb) {
|
||||||
release_sock(sk);
|
release_sock(sk);
|
||||||
return rc;
|
return rc;
|
||||||
|
@ -1230,7 +1230,8 @@ static int rose_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
|
|||||||
return -ENOTCONN;
|
return -ENOTCONN;
|
||||||
|
|
||||||
/* Now we can treat all alike */
|
/* 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;
|
return er;
|
||||||
|
|
||||||
qbit = (skb->data[0] & ROSE_Q_BIT) == ROSE_Q_BIT;
|
qbit = (skb->data[0] & ROSE_Q_BIT) == ROSE_Q_BIT;
|
||||||
|
@ -1643,7 +1643,8 @@ static int unix_accept(struct socket *sock, struct socket *newsock, int flags,
|
|||||||
* so that no locks are necessary.
|
* 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) {
|
if (!skb) {
|
||||||
/* This means receive shutdown. */
|
/* This means receive shutdown. */
|
||||||
if (err == 0)
|
if (err == 0)
|
||||||
@ -2500,7 +2501,7 @@ static int unix_read_sock(struct sock *sk, read_descriptor_t *desc,
|
|||||||
int used, err;
|
int used, err;
|
||||||
|
|
||||||
mutex_lock(&u->iolock);
|
mutex_lock(&u->iolock);
|
||||||
skb = skb_recv_datagram(sk, 0, 1, &err);
|
skb = skb_recv_datagram(sk, MSG_DONTWAIT, &err);
|
||||||
mutex_unlock(&u->iolock);
|
mutex_unlock(&u->iolock);
|
||||||
if (!skb)
|
if (!skb)
|
||||||
return err;
|
return err;
|
||||||
|
@ -1732,19 +1732,16 @@ static int vmci_transport_dgram_dequeue(struct vsock_sock *vsk,
|
|||||||
int flags)
|
int flags)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
int noblock;
|
|
||||||
struct vmci_datagram *dg;
|
struct vmci_datagram *dg;
|
||||||
size_t payload_len;
|
size_t payload_len;
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
|
|
||||||
noblock = flags & MSG_DONTWAIT;
|
|
||||||
|
|
||||||
if (flags & MSG_OOB || flags & MSG_ERRQUEUE)
|
if (flags & MSG_OOB || flags & MSG_ERRQUEUE)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
/* Retrieve the head sk_buff from the socket's receive queue. */
|
/* Retrieve the head sk_buff from the socket's receive queue. */
|
||||||
err = 0;
|
err = 0;
|
||||||
skb = skb_recv_datagram(&vsk->sk, flags, noblock, &err);
|
skb = skb_recv_datagram(&vsk->sk, flags, &err);
|
||||||
if (!skb)
|
if (!skb)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
@ -1315,8 +1315,7 @@ static int x25_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
|
|||||||
} else {
|
} else {
|
||||||
/* Now we can treat all alike */
|
/* Now we can treat all alike */
|
||||||
release_sock(sk);
|
release_sock(sk);
|
||||||
skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
|
skb = skb_recv_datagram(sk, flags, &rc);
|
||||||
flags & MSG_DONTWAIT, &rc);
|
|
||||||
lock_sock(sk);
|
lock_sock(sk);
|
||||||
if (!skb)
|
if (!skb)
|
||||||
goto out;
|
goto out;
|
||||||
|
Loading…
Reference in New Issue
Block a user