switch l2cap ->memcpy_fromiovec() to msghdr
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 24 Nov 2014 21:44:09 +0000 (16:44 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 9 Dec 2014 21:28:23 +0000 (16:28 -0500)
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: Al Viro <viro@zeniv.linux.org.uk>
include/net/bluetooth/l2cap.h
net/bluetooth/l2cap_core.c
net/bluetooth/l2cap_sock.c

index 061e648052c8745f5457fba577e6183e16ef2779..4e23674d3649b23e4d3e867cb6d5c07d595e78d8 100644 (file)
@@ -608,7 +608,7 @@ struct l2cap_ops {
                                               unsigned long len, int nb);
        int                     (*memcpy_fromiovec) (struct l2cap_chan *chan,
                                                     unsigned char *kdata,
-                                                    struct iovec *iov,
+                                                    struct msghdr *msg,
                                                     int len);
 };
 
@@ -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,
                                                 unsigned char *kdata,
-                                                struct iovec *iov,
+                                                struct msghdr *msg,
                                                 int len)
 {
        /* Following is safe since for compiler definitions of kvec and
         * 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) {
                if (vec->iov_len) {
index 8e127317302096959f64f2fc5af4556252b903b5..5201d6167acb3669d68c562e5caeceea5d2d643e 100644 (file)
@@ -2097,7 +2097,7 @@ static inline int l2cap_skbuff_fromiovec(struct l2cap_chan *chan,
        int sent = 0;
 
        if (chan->ops->memcpy_fromiovec(chan, skb_put(skb, count),
-                                       msg->msg_iov, count))
+                                       msg, count))
                return -EFAULT;
 
        sent += count;
@@ -2118,7 +2118,7 @@ static inline int l2cap_skbuff_fromiovec(struct l2cap_chan *chan,
                *frag = tmp;
 
                if (chan->ops->memcpy_fromiovec(chan, skb_put(*frag, count),
-                                               msg->msg_iov, count))
+                                               msg, count))
                        return -EFAULT;
 
                sent += count;
index b0efb7202957cc4ae61781fb8642e1b30c9dd1f8..205b298d9efb6e7329fe0e0db0624dbfaf334b9d 100644 (file)
@@ -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,
                                          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)