Commit 56c39fb6 authored by Al Viro's avatar Al Viro

switch l2cap ->memcpy_fromiovec() to msghdr

it'll die soon enough - now that kvec-backed iov_iter works regardless
of set_fs(), both instances will become copy_from_iter() as soon as
we introduce ->msg_iter...
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent f4362a2c
...@@ -608,7 +608,7 @@ struct l2cap_ops { ...@@ -608,7 +608,7 @@ struct l2cap_ops {
unsigned long len, int nb); unsigned long len, int nb);
int (*memcpy_fromiovec) (struct l2cap_chan *chan, int (*memcpy_fromiovec) (struct l2cap_chan *chan,
unsigned char *kdata, unsigned char *kdata,
struct iovec *iov, struct msghdr *msg,
int len); int len);
}; };
...@@ -905,13 +905,13 @@ static inline long l2cap_chan_no_get_sndtimeo(struct l2cap_chan *chan) ...@@ -905,13 +905,13 @@ static inline long l2cap_chan_no_get_sndtimeo(struct l2cap_chan *chan)
static inline int l2cap_chan_no_memcpy_fromiovec(struct l2cap_chan *chan, static inline int l2cap_chan_no_memcpy_fromiovec(struct l2cap_chan *chan,
unsigned char *kdata, unsigned char *kdata,
struct iovec *iov, struct msghdr *msg,
int len) int len)
{ {
/* Following is safe since for compiler definitions of kvec and /* Following is safe since for compiler definitions of kvec and
* iovec are identical, yielding the same in-core layout and alignment * iovec are identical, yielding the same in-core layout and alignment
*/ */
struct kvec *vec = (struct kvec *)iov; struct kvec *vec = (struct kvec *)msg->msg_iov;
while (len > 0) { while (len > 0) {
if (vec->iov_len) { if (vec->iov_len) {
......
...@@ -2097,7 +2097,7 @@ static inline int l2cap_skbuff_fromiovec(struct l2cap_chan *chan, ...@@ -2097,7 +2097,7 @@ static inline int l2cap_skbuff_fromiovec(struct l2cap_chan *chan,
int sent = 0; int sent = 0;
if (chan->ops->memcpy_fromiovec(chan, skb_put(skb, count), if (chan->ops->memcpy_fromiovec(chan, skb_put(skb, count),
msg->msg_iov, count)) msg, count))
return -EFAULT; return -EFAULT;
sent += count; sent += count;
...@@ -2118,7 +2118,7 @@ static inline int l2cap_skbuff_fromiovec(struct l2cap_chan *chan, ...@@ -2118,7 +2118,7 @@ static inline int l2cap_skbuff_fromiovec(struct l2cap_chan *chan,
*frag = tmp; *frag = tmp;
if (chan->ops->memcpy_fromiovec(chan, skb_put(*frag, count), if (chan->ops->memcpy_fromiovec(chan, skb_put(*frag, count),
msg->msg_iov, count)) msg, count))
return -EFAULT; return -EFAULT;
sent += count; sent += count;
......
...@@ -1338,9 +1338,9 @@ static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan, ...@@ -1338,9 +1338,9 @@ static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan,
static int l2cap_sock_memcpy_fromiovec_cb(struct l2cap_chan *chan, static int l2cap_sock_memcpy_fromiovec_cb(struct l2cap_chan *chan,
unsigned char *kdata, unsigned char *kdata,
struct iovec *iov, int len) struct msghdr *msg, int len)
{ {
return memcpy_fromiovec(kdata, iov, len); return memcpy_from_msg(kdata, msg, len);
} }
static void l2cap_sock_ready_cb(struct l2cap_chan *chan) static void l2cap_sock_ready_cb(struct l2cap_chan *chan)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment