aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-12-10 13:17:23 -0500
committerDavid S. Miller <davem@davemloft.net>2014-12-10 13:17:23 -0500
commit6e5f59aacbf9527dfe425541c78cb8c56623e7eb (patch)
treedc5614e1546dba2bd6896d4aa21410e1d3297a09 /net/bluetooth
parent6c702fab626328c33b539b0c618a5511aed23bed (diff)
parent218321e7a0838c2be974539f0a5341b398d4432b (diff)
Merge branch 'for-davem-2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
More iov_iter work for the networking from Al Viro. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bluetooth')
-rw-r--r--net/bluetooth/6lowpan.c7
-rw-r--r--net/bluetooth/a2mp.c4
-rw-r--r--net/bluetooth/l2cap_core.c7
-rw-r--r--net/bluetooth/l2cap_sock.c8
-rw-r--r--net/bluetooth/smp.c5
5 files changed, 8 insertions, 23 deletions
diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
index bdcaefd2db12..76617be1e797 100644
--- a/net/bluetooth/6lowpan.c
+++ b/net/bluetooth/6lowpan.c
@@ -537,12 +537,12 @@ static int send_pkt(struct l2cap_chan *chan, struct sk_buff *skb,
537 */ 537 */
538 chan->data = skb; 538 chan->data = skb;
539 539
540 memset(&msg, 0, sizeof(msg));
541 msg.msg_iov = (struct iovec *) &iv;
542 msg.msg_iovlen = 1;
543 iv.iov_base = skb->data; 540 iv.iov_base = skb->data;
544 iv.iov_len = skb->len; 541 iv.iov_len = skb->len;
545 542
543 memset(&msg, 0, sizeof(msg));
544 iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, &iv, 1, skb->len);
545
546 err = l2cap_chan_send(chan, &msg, skb->len); 546 err = l2cap_chan_send(chan, &msg, skb->len);
547 if (err > 0) { 547 if (err > 0) {
548 netdev->stats.tx_bytes += err; 548 netdev->stats.tx_bytes += err;
@@ -1050,7 +1050,6 @@ static const struct l2cap_ops bt_6lowpan_chan_ops = {
1050 .suspend = chan_suspend_cb, 1050 .suspend = chan_suspend_cb,
1051 .get_sndtimeo = chan_get_sndtimeo_cb, 1051 .get_sndtimeo = chan_get_sndtimeo_cb,
1052 .alloc_skb = chan_alloc_skb_cb, 1052 .alloc_skb = chan_alloc_skb_cb,
1053 .memcpy_fromiovec = l2cap_chan_no_memcpy_fromiovec,
1054 1053
1055 .teardown = l2cap_chan_no_teardown, 1054 .teardown = l2cap_chan_no_teardown,
1056 .defer = l2cap_chan_no_defer, 1055 .defer = l2cap_chan_no_defer,
diff --git a/net/bluetooth/a2mp.c b/net/bluetooth/a2mp.c
index 5dcade511fdb..cedfbda15dad 100644
--- a/net/bluetooth/a2mp.c
+++ b/net/bluetooth/a2mp.c
@@ -60,8 +60,7 @@ void a2mp_send(struct amp_mgr *mgr, u8 code, u8 ident, u16 len, void *data)
60 60
61 memset(&msg, 0, sizeof(msg)); 61 memset(&msg, 0, sizeof(msg));
62 62
63 msg.msg_iov = (struct iovec *) &iv; 63 iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, &iv, 1, total_len);
64 msg.msg_iovlen = 1;
65 64
66 l2cap_chan_send(chan, &msg, total_len); 65 l2cap_chan_send(chan, &msg, total_len);
67 66
@@ -720,7 +719,6 @@ static const struct l2cap_ops a2mp_chan_ops = {
720 .resume = l2cap_chan_no_resume, 719 .resume = l2cap_chan_no_resume,
721 .set_shutdown = l2cap_chan_no_set_shutdown, 720 .set_shutdown = l2cap_chan_no_set_shutdown,
722 .get_sndtimeo = l2cap_chan_no_get_sndtimeo, 721 .get_sndtimeo = l2cap_chan_no_get_sndtimeo,
723 .memcpy_fromiovec = l2cap_chan_no_memcpy_fromiovec,
724}; 722};
725 723
726static struct l2cap_chan *a2mp_chan_open(struct l2cap_conn *conn, bool locked) 724static struct l2cap_chan *a2mp_chan_open(struct l2cap_conn *conn, bool locked)
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index a8da7ea9c2c0..a2b6dfa38a0c 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -2103,8 +2103,7 @@ static inline int l2cap_skbuff_fromiovec(struct l2cap_chan *chan,
2103 struct sk_buff **frag; 2103 struct sk_buff **frag;
2104 int sent = 0; 2104 int sent = 0;
2105 2105
2106 if (chan->ops->memcpy_fromiovec(chan, skb_put(skb, count), 2106 if (copy_from_iter(skb_put(skb, count), count, &msg->msg_iter) != count)
2107 msg->msg_iov, count))
2108 return -EFAULT; 2107 return -EFAULT;
2109 2108
2110 sent += count; 2109 sent += count;
@@ -2124,8 +2123,8 @@ static inline int l2cap_skbuff_fromiovec(struct l2cap_chan *chan,
2124 2123
2125 *frag = tmp; 2124 *frag = tmp;
2126 2125
2127 if (chan->ops->memcpy_fromiovec(chan, skb_put(*frag, count), 2126 if (copy_from_iter(skb_put(*frag, count), count,
2128 msg->msg_iov, count)) 2127 &msg->msg_iter) != count)
2129 return -EFAULT; 2128 return -EFAULT;
2130 2129
2131 sent += count; 2130 sent += count;
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
index b0efb7202957..f65caf41953f 100644
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
@@ -1336,13 +1336,6 @@ static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan,
1336 return skb; 1336 return skb;
1337} 1337}
1338 1338
1339static int l2cap_sock_memcpy_fromiovec_cb(struct l2cap_chan *chan,
1340 unsigned char *kdata,
1341 struct iovec *iov, int len)
1342{
1343 return memcpy_fromiovec(kdata, iov, len);
1344}
1345
1346static void l2cap_sock_ready_cb(struct l2cap_chan *chan) 1339static void l2cap_sock_ready_cb(struct l2cap_chan *chan)
1347{ 1340{
1348 struct sock *sk = chan->data; 1341 struct sock *sk = chan->data;
@@ -1427,7 +1420,6 @@ static const struct l2cap_ops l2cap_chan_ops = {
1427 .set_shutdown = l2cap_sock_set_shutdown_cb, 1420 .set_shutdown = l2cap_sock_set_shutdown_cb,
1428 .get_sndtimeo = l2cap_sock_get_sndtimeo_cb, 1421 .get_sndtimeo = l2cap_sock_get_sndtimeo_cb,
1429 .alloc_skb = l2cap_sock_alloc_skb_cb, 1422 .alloc_skb = l2cap_sock_alloc_skb_cb,
1430 .memcpy_fromiovec = l2cap_sock_memcpy_fromiovec_cb,
1431}; 1423};
1432 1424
1433static void l2cap_sock_destruct(struct sock *sk) 1425static void l2cap_sock_destruct(struct sock *sk)
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
index 96bf16dcd9e9..6a46252fe66f 100644
--- a/net/bluetooth/smp.c
+++ b/net/bluetooth/smp.c
@@ -539,8 +539,7 @@ static void smp_send_cmd(struct l2cap_conn *conn, u8 code, u16 len, void *data)
539 539
540 memset(&msg, 0, sizeof(msg)); 540 memset(&msg, 0, sizeof(msg));
541 541
542 msg.msg_iov = (struct iovec *) &iv; 542 iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, iv, 2, 1 + len);
543 msg.msg_iovlen = 2;
544 543
545 l2cap_chan_send(chan, &msg, 1 + len); 544 l2cap_chan_send(chan, &msg, 1 + len);
546 545
@@ -2865,7 +2864,6 @@ static const struct l2cap_ops smp_chan_ops = {
2865 .suspend = l2cap_chan_no_suspend, 2864 .suspend = l2cap_chan_no_suspend,
2866 .set_shutdown = l2cap_chan_no_set_shutdown, 2865 .set_shutdown = l2cap_chan_no_set_shutdown,
2867 .get_sndtimeo = l2cap_chan_no_get_sndtimeo, 2866 .get_sndtimeo = l2cap_chan_no_get_sndtimeo,
2868 .memcpy_fromiovec = l2cap_chan_no_memcpy_fromiovec,
2869}; 2867};
2870 2868
2871static inline struct l2cap_chan *smp_new_conn_cb(struct l2cap_chan *pchan) 2869static inline struct l2cap_chan *smp_new_conn_cb(struct l2cap_chan *pchan)
@@ -2914,7 +2912,6 @@ static const struct l2cap_ops smp_root_chan_ops = {
2914 .resume = l2cap_chan_no_resume, 2912 .resume = l2cap_chan_no_resume,
2915 .set_shutdown = l2cap_chan_no_set_shutdown, 2913 .set_shutdown = l2cap_chan_no_set_shutdown,
2916 .get_sndtimeo = l2cap_chan_no_get_sndtimeo, 2914 .get_sndtimeo = l2cap_chan_no_get_sndtimeo,
2917 .memcpy_fromiovec = l2cap_chan_no_memcpy_fromiovec,
2918}; 2915};
2919 2916
2920static struct l2cap_chan *smp_add_cid(struct hci_dev *hdev, u16 cid) 2917static struct l2cap_chan *smp_add_cid(struct hci_dev *hdev, u16 cid)