Skip to content

Commit 1783639

Browse files
author
Al Viro
committed
first fruits - kill l2cap ->memcpy_fromiovec()
Just use copy_from_iter(). That's what this method is trying to do in all cases, in a very convoluted fashion. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
1 parent c0371da commit 1783639

File tree

6 files changed

+6
-48
lines changed

6 files changed

+6
-48
lines changed

include/net/bluetooth/l2cap.h

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -606,10 +606,6 @@ struct l2cap_ops {
606606
struct sk_buff *(*alloc_skb) (struct l2cap_chan *chan,
607607
unsigned long hdr_len,
608608
unsigned long len, int nb);
609-
int (*memcpy_fromiovec) (struct l2cap_chan *chan,
610-
unsigned char *kdata,
611-
struct msghdr *msg,
612-
int len);
613609
};
614610

615611
struct l2cap_conn {
@@ -903,31 +899,6 @@ static inline long l2cap_chan_no_get_sndtimeo(struct l2cap_chan *chan)
903899
return 0;
904900
}
905901

906-
static inline int l2cap_chan_no_memcpy_fromiovec(struct l2cap_chan *chan,
907-
unsigned char *kdata,
908-
struct msghdr *msg,
909-
int len)
910-
{
911-
/* Following is safe since for compiler definitions of kvec and
912-
* iovec are identical, yielding the same in-core layout and alignment
913-
*/
914-
struct kvec *vec = (struct kvec *)msg->msg_iter.iov;
915-
916-
while (len > 0) {
917-
if (vec->iov_len) {
918-
int copy = min_t(unsigned int, len, vec->iov_len);
919-
memcpy(kdata, vec->iov_base, copy);
920-
len -= copy;
921-
kdata += copy;
922-
vec->iov_base += copy;
923-
vec->iov_len -= copy;
924-
}
925-
vec++;
926-
}
927-
928-
return 0;
929-
}
930-
931902
extern bool disable_ertm;
932903

933904
int l2cap_init_sockets(void);

net/bluetooth/6lowpan.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@ static int send_pkt(struct l2cap_chan *chan, struct sk_buff *skb,
541541
iv.iov_len = skb->len;
542542

543543
memset(&msg, 0, sizeof(msg));
544-
iov_iter_init(&msg.msg_iter, WRITE, (struct iovec *) &iv, 1, skb->len);
544+
iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, &iv, 1, skb->len);
545545

546546
err = l2cap_chan_send(chan, &msg, skb->len);
547547
if (err > 0) {
@@ -1050,7 +1050,6 @@ static const struct l2cap_ops bt_6lowpan_chan_ops = {
10501050
.suspend = chan_suspend_cb,
10511051
.get_sndtimeo = chan_get_sndtimeo_cb,
10521052
.alloc_skb = chan_alloc_skb_cb,
1053-
.memcpy_fromiovec = l2cap_chan_no_memcpy_fromiovec,
10541053

10551054
.teardown = l2cap_chan_no_teardown,
10561055
.defer = l2cap_chan_no_defer,

net/bluetooth/a2mp.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ void a2mp_send(struct amp_mgr *mgr, u8 code, u8 ident, u16 len, void *data)
6060

6161
memset(&msg, 0, sizeof(msg));
6262

63-
iov_iter_init(&msg.msg_iter, WRITE, (struct iovec *)&iv, 1, total_len);
63+
iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, &iv, 1, total_len);
6464

6565
l2cap_chan_send(chan, &msg, total_len);
6666

@@ -719,7 +719,6 @@ static const struct l2cap_ops a2mp_chan_ops = {
719719
.resume = l2cap_chan_no_resume,
720720
.set_shutdown = l2cap_chan_no_set_shutdown,
721721
.get_sndtimeo = l2cap_chan_no_get_sndtimeo,
722-
.memcpy_fromiovec = l2cap_chan_no_memcpy_fromiovec,
723722
};
724723

725724
static struct l2cap_chan *a2mp_chan_open(struct l2cap_conn *conn, bool locked)

net/bluetooth/l2cap_core.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2096,8 +2096,7 @@ static inline int l2cap_skbuff_fromiovec(struct l2cap_chan *chan,
20962096
struct sk_buff **frag;
20972097
int sent = 0;
20982098

2099-
if (chan->ops->memcpy_fromiovec(chan, skb_put(skb, count),
2100-
msg, count))
2099+
if (copy_from_iter(skb_put(skb, count), count, &msg->msg_iter) != count)
21012100
return -EFAULT;
21022101

21032102
sent += count;
@@ -2117,8 +2116,8 @@ static inline int l2cap_skbuff_fromiovec(struct l2cap_chan *chan,
21172116

21182117
*frag = tmp;
21192118

2120-
if (chan->ops->memcpy_fromiovec(chan, skb_put(*frag, count),
2121-
msg, count))
2119+
if (copy_from_iter(skb_put(*frag, count), count,
2120+
&msg->msg_iter) != count)
21222121
return -EFAULT;
21232122

21242123
sent += count;

net/bluetooth/l2cap_sock.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1336,13 +1336,6 @@ static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan,
13361336
return skb;
13371337
}
13381338

1339-
static int l2cap_sock_memcpy_fromiovec_cb(struct l2cap_chan *chan,
1340-
unsigned char *kdata,
1341-
struct msghdr *msg, int len)
1342-
{
1343-
return memcpy_from_msg(kdata, msg, len);
1344-
}
1345-
13461339
static void l2cap_sock_ready_cb(struct l2cap_chan *chan)
13471340
{
13481341
struct sock *sk = chan->data;
@@ -1427,7 +1420,6 @@ static const struct l2cap_ops l2cap_chan_ops = {
14271420
.set_shutdown = l2cap_sock_set_shutdown_cb,
14281421
.get_sndtimeo = l2cap_sock_get_sndtimeo_cb,
14291422
.alloc_skb = l2cap_sock_alloc_skb_cb,
1430-
.memcpy_fromiovec = l2cap_sock_memcpy_fromiovec_cb,
14311423
};
14321424

14331425
static void l2cap_sock_destruct(struct sock *sk)

net/bluetooth/smp.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ static void smp_send_cmd(struct l2cap_conn *conn, u8 code, u16 len, void *data)
268268

269269
memset(&msg, 0, sizeof(msg));
270270

271-
iov_iter_init(&msg.msg_iter, WRITE, (struct iovec *)iv, 2, 1 + len);
271+
iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, iv, 2, 1 + len);
272272

273273
l2cap_chan_send(chan, &msg, 1 + len);
274274

@@ -1629,7 +1629,6 @@ static const struct l2cap_ops smp_chan_ops = {
16291629
.suspend = l2cap_chan_no_suspend,
16301630
.set_shutdown = l2cap_chan_no_set_shutdown,
16311631
.get_sndtimeo = l2cap_chan_no_get_sndtimeo,
1632-
.memcpy_fromiovec = l2cap_chan_no_memcpy_fromiovec,
16331632
};
16341633

16351634
static inline struct l2cap_chan *smp_new_conn_cb(struct l2cap_chan *pchan)
@@ -1678,7 +1677,6 @@ static const struct l2cap_ops smp_root_chan_ops = {
16781677
.resume = l2cap_chan_no_resume,
16791678
.set_shutdown = l2cap_chan_no_set_shutdown,
16801679
.get_sndtimeo = l2cap_chan_no_get_sndtimeo,
1681-
.memcpy_fromiovec = l2cap_chan_no_memcpy_fromiovec,
16821680
};
16831681

16841682
int smp_register(struct hci_dev *hdev)

0 commit comments

Comments
 (0)