(3/17) bluetooth -- size_t for send/recvmsg
Subsystems (3)
PATCH 1/1 (3/17) bluetooth -- size_t for send/recvmsg
Convert bluetooth sendmsg/recvmsg from size as int to size_t. Add check in HCI that sendmsg < max allowed frame size.
include/net/bluetooth/bluetooth.h +1 -1
@@ -129,7 +129,7 @@struct sock *bt_sock_alloc (struct socket *sock,int proto,int pi_size,int prio);void bt_sock_link (struct bt_sock_list *l,struct sock *s);void bt_sock_unlink (struct bt_sock_list *l,struct sock *s); -int bt_sock_recvmsg (struct kiocb *iocb,struct socket *sock,struct msghdr *msg,int len,int flags); +int bt_sock_recvmsg (struct kiocb *iocb,struct socket *sock,struct msghdr *msg,size_t len,int flags);uint bt_sock_poll (struct file * file,struct socket *sock,poll_table *wait);int bt_sock_wait_state (struct sock *sk,int state,unsigned long timeo);
net/bluetooth/af_bluetooth.c +3 -2
@@ -201,12 +201,13 @@ }int bt_sock_recvmsg (struct kiocb *iocb,struct socket *sock, -struct msghdr *msg,int len,int flags) +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; +size_t copied; +int err;BT_DBG ("sock %p sk %p len %d" , sock, sk, len);
net/bluetooth/hci_sock.c +6 -4
@@ -319,7 +319,8 @@put_cmsg (msg,SOL_HCI ,HCI_CMSG_TSTAMP ,sizeof (skb->stamp), &skb->stamp); } -static int hci_sock_recvmsg (struct kiocb *iocb,struct socket *sock,struct msghdr *msg,int len,int flags) +static int hci_sock_recvmsg (struct kiocb *iocb,struct socket *sock, +struct msghdr *msg,size_t len,int flags) {int noblock = flags &MSG_DONTWAIT ;struct sock *sk = sock->sk;
@@ -355,7 +356,8 @@return err ? : copied; } -static int hci_sock_sendmsg (struct kiocb *iocb,struct socket *sock,struct msghdr *msg,int len) +static int hci_sock_sendmsg (struct kiocb *iocb,struct socket *sock, +struct msghdr *msg,size_t len) {struct sock *sk = sock->sk;struct hci_dev *hdev;
@@ -370,9 +372,9 @@if (msg->msg_flags & ~(MSG_DONTWAIT |MSG_NOSIGNAL |MSG_ERRQUEUE ))return -EINVAL ; -if (len <4 ) +if (len <4 || len >HCI_MAX_FRAME_SIZE )return -EINVAL ; - +lock_sock (sk);if (!(hdev =hci_pi (sk)->hdev)) {
net/bluetooth/l2cap.c +2 -1
@@ -706,7 +706,8 @@return err; } -static int l2cap_sock_sendmsg (struct kiocb *iocb,struct socket *sock,struct msghdr *msg,int len) +static int l2cap_sock_sendmsg (struct kiocb *iocb,struct socket *sock, +struct msghdr *msg,size_t len) {struct sock *sk = sock->sk;int err =0 ;
net/bluetooth/rfcomm/sock.c +6 -5
@@ -482,12 +482,12 @@ }static int rfcomm_sock_sendmsg (struct kiocb *iocb,struct socket *sock, -struct msghdr *msg,int len) +struct msghdr *msg,size_t len) {struct sock *sk = sock->sk;struct rfcomm_dlc *d =rfcomm_pi (sk)->dlc;struct sk_buff *skb; -int err, size; +int err;int sent =0 ;if (msg->msg_flags &MSG_OOB )
@@ -501,7 +501,7 @@lock_sock (sk);while (len) { - size =min_t (uint, len, d->mtu); +size_t size =min (len, d->mtu); skb =sock_alloc_send_skb (sk, size +RFCOMM_SKB_RESERVE , msg->msg_flags &MSG_DONTWAIT , &err);
@@ -556,10 +556,11 @@ }static int rfcomm_sock_recvmsg (struct kiocb *iocb,struct socket *sock, -struct msghdr *msg,int size,int flags) +struct msghdr *msg,size_t size,int flags) {struct sock *sk = sock->sk; -int target, err =0 , copied =0 ; +int err =0 ; +size_t target, copied =0 ;long timeo;if (flags &MSG_OOB )
net/bluetooth/sco.c +2 -1
@@ -630,7 +630,8 @@return 0 ; } -static int sco_sock_sendmsg (struct kiocb *iocb,struct socket *sock,struct msghdr *msg,int len) +static int sco_sock_sendmsg (struct kiocb *iocb,struct socket *sock, +struct msghdr *msg,size_t len) {struct sock *sk = sock->sk;int err =0 ;