aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth
diff options
context:
space:
mode:
Diffstat (limited to 'net/bluetooth')
-rw-r--r--net/bluetooth/bnep/core.c2
-rw-r--r--net/bluetooth/cmtp/core.c4
-rw-r--r--net/bluetooth/l2cap.c6
3 files changed, 7 insertions, 5 deletions
diff --git a/net/bluetooth/bnep/core.c b/net/bluetooth/bnep/core.c
index 97156c4abc8d..ab2db55982ca 100644
--- a/net/bluetooth/bnep/core.c
+++ b/net/bluetooth/bnep/core.c
@@ -382,7 +382,7 @@ static inline int bnep_rx_frame(struct bnep_session *s, struct sk_buff *skb)
382 break; 382 break;
383 } 383 }
384 384
385 memcpy(__skb_put(nskb, skb->len), skb->data, skb->len); 385 skb_copy_from_linear_data(skb, __skb_put(nskb, skb->len), skb->len);
386 kfree_skb(skb); 386 kfree_skb(skb);
387 387
388 s->stats.rx_packets++; 388 s->stats.rx_packets++;
diff --git a/net/bluetooth/cmtp/core.c b/net/bluetooth/cmtp/core.c
index 3933608a9296..66bef1ccee2a 100644
--- a/net/bluetooth/cmtp/core.c
+++ b/net/bluetooth/cmtp/core.c
@@ -124,7 +124,7 @@ static inline void cmtp_add_msgpart(struct cmtp_session *session, int id, const
124 } 124 }
125 125
126 if (skb && (skb->len > 0)) 126 if (skb && (skb->len > 0))
127 memcpy(skb_put(nskb, skb->len), skb->data, skb->len); 127 skb_copy_from_linear_data(skb, skb_put(nskb, skb->len), skb->len);
128 128
129 memcpy(skb_put(nskb, count), buf, count); 129 memcpy(skb_put(nskb, count), buf, count);
130 130
@@ -256,7 +256,7 @@ static void cmtp_process_transmit(struct cmtp_session *session)
256 hdr[2] = size >> 8; 256 hdr[2] = size >> 8;
257 } 257 }
258 258
259 memcpy(skb_put(nskb, size), skb->data, size); 259 skb_copy_from_linear_data(skb, skb_put(nskb, size), size);
260 skb_pull(skb, size); 260 skb_pull(skb, size);
261 261
262 if (skb->len > 0) { 262 if (skb->len > 0) {
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c
index 162eab6a4478..a5867879b615 100644
--- a/net/bluetooth/l2cap.c
+++ b/net/bluetooth/l2cap.c
@@ -2107,7 +2107,8 @@ static int l2cap_recv_acldata(struct hci_conn *hcon, struct sk_buff *skb, u16 fl
2107 if (!(conn->rx_skb = bt_skb_alloc(len, GFP_ATOMIC))) 2107 if (!(conn->rx_skb = bt_skb_alloc(len, GFP_ATOMIC)))
2108 goto drop; 2108 goto drop;
2109 2109
2110 memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len); 2110 skb_copy_from_linear_data(skb, skb_put(conn->rx_skb, skb->len),
2111 skb->len);
2111 conn->rx_len = len - skb->len; 2112 conn->rx_len = len - skb->len;
2112 } else { 2113 } else {
2113 BT_DBG("Cont: frag len %d (expecting %d)", skb->len, conn->rx_len); 2114 BT_DBG("Cont: frag len %d (expecting %d)", skb->len, conn->rx_len);
@@ -2128,7 +2129,8 @@ static int l2cap_recv_acldata(struct hci_conn *hcon, struct sk_buff *skb, u16 fl
2128 goto drop; 2129 goto drop;
2129 } 2130 }
2130 2131
2131 memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len); 2132 skb_copy_from_linear_data(skb, skb_put(conn->rx_skb, skb->len),
2133 skb->len);
2132 conn->rx_len -= skb->len; 2134 conn->rx_len -= skb->len;
2133 2135
2134 if (!conn->rx_len) { 2136 if (!conn->rx_len) {