Commit 27d7ff46a3498d3debc6ba68fb8014c702b81170
Committed by
David S. Miller
1 parent
3dbad80ac7
Exists in
master
and in
39 other branches
[SK_BUFF]: Introduce skb_copy_to_linear_data{_offset}
To clearly state the intent of copying to linear sk_buffs, _offset being a overly long variant but interesting for the sake of saving some bytes. Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Showing 63 changed files with 185 additions and 127 deletions Side-by-side Diff
- arch/ia64/hp/sim/simeth.c
- arch/ia64/sn/kernel/xpnet.c
- drivers/isdn/hysdn/hycapi.c
- drivers/net/8139too.c
- drivers/net/appletalk/ltpc.c
- drivers/net/atari_bionet.c
- drivers/net/atari_pamsnet.c
- drivers/net/chelsio/sge.c
- drivers/net/cxgb3/sge.c
- drivers/net/defxx.c
- drivers/net/e100.c
- drivers/net/e1000/e1000_main.c
- drivers/net/ehea/ehea_main.c
- drivers/net/irda/ali-ircc.c
- drivers/net/irda/au1k_ir.c
- drivers/net/irda/donauboe.c
- drivers/net/irda/mcs7780.c
- drivers/net/irda/nsc-ircc.c
- drivers/net/irda/pxaficp_ir.c
- drivers/net/irda/stir4200.c
- drivers/net/irda/via-ircc.c
- drivers/net/irda/w83977af_ir.c
- drivers/net/ixgb/ixgb_main.c
- drivers/net/loopback.c
- drivers/net/macb.c
- drivers/net/myri10ge/myri10ge.c
- drivers/net/sk98lin/skge.c
- drivers/net/skfp/skfddi.c
- drivers/net/sun3lance.c
- drivers/net/tokenring/smctr.c
- drivers/net/tokenring/tms380tr.c
- drivers/net/wan/dscc4.c
- drivers/net/wan/pc300_drv.c
- drivers/net/wan/pc300_tty.c
- drivers/net/wan/z85230.c
- drivers/net/wireless/prism54/islpci_eth.c
- drivers/s390/net/qeth_main.c
- drivers/usb/atm/usbatm.c
- drivers/usb/net/asix.c
- include/linux/skbuff.h
- net/atm/br2684.c
- net/atm/lec.c
- net/atm/mpc.c
- net/bridge/br_netfilter.c
- net/core/netpoll.c
- net/core/skbuff.c
- net/ieee80211/ieee80211_rx.c
- net/ipv4/ipcomp.c
- net/ipv4/ipmr.c
- net/ipv4/ipvs/ip_vs_app.c
- net/ipv4/netfilter/ip_queue.c
- net/ipv6/ipcomp6.c
- net/ipv6/netfilter/ip6_queue.c
- net/irda/irttp.c
- net/irda/wrapper.c
- net/netfilter/nfnetlink_queue.c
- net/netrom/nr_out.c
- net/rose/af_rose.c
- net/tipc/link.c
- net/tipc/msg.h
- net/tipc/port.c
- net/wanrouter/wanmain.c
- net/x25/x25_out.c
arch/ia64/hp/sim/simeth.c
arch/ia64/sn/kernel/xpnet.c
... | ... | @@ -233,7 +233,7 @@ |
233 | 233 | "%lu)\n", skb->data, &msg->data, |
234 | 234 | (size_t) msg->embedded_bytes); |
235 | 235 | |
236 | - memcpy(skb->data, &msg->data, (size_t) msg->embedded_bytes); | |
236 | + skb_copy_to_linear_data(skb, &msg->data, (size_t)msg->embedded_bytes); | |
237 | 237 | } else { |
238 | 238 | dev_dbg(xpnet, "transferring buffer to the skb->data area;\n\t" |
239 | 239 | "bte_copy(0x%p, 0x%p, %hu)\n", (void *)msg->buf_pa, |
drivers/isdn/hysdn/hycapi.c
... | ... | @@ -399,7 +399,8 @@ |
399 | 399 | if (_len > 22) { |
400 | 400 | _len2 = _len - 22; |
401 | 401 | skb_copy_from_linear_data(skb, msghead, 22); |
402 | - memcpy(skb->data + _len2, msghead, 22); | |
402 | + skb_copy_to_linear_data_offset(skb, _len2, | |
403 | + msghead, 22); | |
403 | 404 | skb_pull(skb, _len2); |
404 | 405 | CAPIMSG_SETLEN(skb->data, 22); |
405 | 406 | retval = capilib_data_b3_req(&cinfo->ncci_head, |
drivers/net/8139too.c
... | ... | @@ -1904,10 +1904,10 @@ |
1904 | 1904 | u32 left = RX_BUF_LEN - offset; |
1905 | 1905 | |
1906 | 1906 | if (size > left) { |
1907 | - memcpy(skb->data, ring + offset, left); | |
1908 | - memcpy(skb->data+left, ring, size - left); | |
1907 | + skb_copy_to_linear_data(skb, ring + offset, left); | |
1908 | + skb_copy_to_linear_data_offset(skb, left, ring, size - left); | |
1909 | 1909 | } else |
1910 | - memcpy(skb->data, ring + offset, size); | |
1910 | + skb_copy_to_linear_data(skb, ring + offset, size); | |
1911 | 1911 | } |
1912 | 1912 | #endif |
1913 | 1913 |
drivers/net/appletalk/ltpc.c
drivers/net/atari_bionet.c
... | ... | @@ -550,7 +550,8 @@ |
550 | 550 | |
551 | 551 | /* 'skb->data' points to the start of sk_buff data area. |
552 | 552 | */ |
553 | - memcpy(skb->data, nic_packet->buffer, pkt_len); | |
553 | + skb_copy_to_linear_data(skb, nic_packet->buffer, | |
554 | + pkt_len); | |
554 | 555 | skb->protocol = eth_type_trans( skb, dev ); |
555 | 556 | netif_rx(skb); |
556 | 557 | dev->last_rx = jiffies; |
drivers/net/atari_pamsnet.c
... | ... | @@ -793,7 +793,8 @@ |
793 | 793 | |
794 | 794 | /* 'skb->data' points to the start of sk_buff data area. |
795 | 795 | */ |
796 | - memcpy(skb->data, nic_packet->buffer, pkt_len); | |
796 | + skb_copy_to_linear_data(skb, nic_packet->buffer, | |
797 | + pkt_len); | |
797 | 798 | netif_rx(skb); |
798 | 799 | dev->last_rx = jiffies; |
799 | 800 | lp->stats.rx_packets++; |
drivers/net/chelsio/sge.c
... | ... | @@ -2095,10 +2095,14 @@ |
2095 | 2095 | 0x0, 0x7, 0x43, 0x0, 0x0, 0x0 |
2096 | 2096 | }; |
2097 | 2097 | |
2098 | - memcpy(skb->data + sizeof(struct cpl_tx_pkt), | |
2099 | - ch_mac_addr, ETH_ALEN); | |
2100 | - memcpy(skb->data + skb->len - 10, | |
2101 | - ch_mac_addr, ETH_ALEN); | |
2098 | + skb_copy_to_linear_data_offset(skb, | |
2099 | + sizeof(struct cpl_tx_pkt), | |
2100 | + ch_mac_addr, | |
2101 | + ETH_ALEN); | |
2102 | + skb_copy_to_linear_data_offset(skb, | |
2103 | + skb->len - 10, | |
2104 | + ch_mac_addr, | |
2105 | + ETH_ALEN); | |
2102 | 2106 | skb->cb[0] = 0xff; |
2103 | 2107 | } |
2104 | 2108 | |
... | ... | @@ -2125,10 +2129,14 @@ |
2125 | 2129 | if (!skb->cb[0]) { |
2126 | 2130 | u8 ch_mac_addr[ETH_ALEN] = |
2127 | 2131 | {0x0, 0x7, 0x43, 0x0, 0x0, 0x0}; |
2128 | - memcpy(skb->data + sizeof(struct cpl_tx_pkt), | |
2129 | - ch_mac_addr, ETH_ALEN); | |
2130 | - memcpy(skb->data + skb->len - 10, ch_mac_addr, | |
2131 | - ETH_ALEN); | |
2132 | + skb_copy_to_linear_data_offset(skb, | |
2133 | + sizeof(struct cpl_tx_pkt), | |
2134 | + ch_mac_addr, | |
2135 | + ETH_ALEN); | |
2136 | + skb_copy_to_linear_data_offset(skb, | |
2137 | + skb->len - 10, | |
2138 | + ch_mac_addr, | |
2139 | + ETH_ALEN); | |
2132 | 2140 | skb->cb[0] = 0xff; |
2133 | 2141 | } |
2134 | 2142 |
drivers/net/cxgb3/sge.c
... | ... | @@ -661,7 +661,7 @@ |
661 | 661 | |
662 | 662 | if (skb) { |
663 | 663 | __skb_put(skb, IMMED_PKT_SIZE); |
664 | - memcpy(skb->data, resp->imm_data, IMMED_PKT_SIZE); | |
664 | + skb_copy_to_linear_data(skb, resp->imm_data, IMMED_PKT_SIZE); | |
665 | 665 | } |
666 | 666 | return skb; |
667 | 667 | } |
668 | 668 | |
... | ... | @@ -1722,11 +1722,11 @@ |
1722 | 1722 | { |
1723 | 1723 | skb->len = len; |
1724 | 1724 | if (len <= SKB_DATA_SIZE) { |
1725 | - memcpy(skb->data, p->va, len); | |
1725 | + skb_copy_to_linear_data(skb, p->va, len); | |
1726 | 1726 | skb->tail += len; |
1727 | 1727 | put_page(p->frag.page); |
1728 | 1728 | } else { |
1729 | - memcpy(skb->data, p->va, SKB_DATA_SIZE); | |
1729 | + skb_copy_to_linear_data(skb, p->va, SKB_DATA_SIZE); | |
1730 | 1730 | skb_shinfo(skb)->frags[0].page = p->frag.page; |
1731 | 1731 | skb_shinfo(skb)->frags[0].page_offset = |
1732 | 1732 | p->frag.page_offset + SKB_DATA_SIZE; |
drivers/net/defxx.c
... | ... | @@ -3091,7 +3091,9 @@ |
3091 | 3091 | { |
3092 | 3092 | /* Receive buffer allocated, pass receive packet up */ |
3093 | 3093 | |
3094 | - memcpy(skb->data, p_buff + RCV_BUFF_K_PADDING, pkt_len+3); | |
3094 | + skb_copy_to_linear_data(skb, | |
3095 | + p_buff + RCV_BUFF_K_PADDING, | |
3096 | + pkt_len + 3); | |
3095 | 3097 | } |
3096 | 3098 | |
3097 | 3099 | skb_reserve(skb,3); /* adjust data field so that it points to FC byte */ |
drivers/net/e100.c
... | ... | @@ -1769,7 +1769,7 @@ |
1769 | 1769 | |
1770 | 1770 | /* Align, init, and map the RFD. */ |
1771 | 1771 | skb_reserve(rx->skb, NET_IP_ALIGN); |
1772 | - memcpy(rx->skb->data, &nic->blank_rfd, sizeof(struct rfd)); | |
1772 | + skb_copy_to_linear_data(rx->skb, &nic->blank_rfd, sizeof(struct rfd)); | |
1773 | 1773 | rx->dma_addr = pci_map_single(nic->pdev, rx->skb->data, |
1774 | 1774 | RFD_BUF_LEN, PCI_DMA_BIDIRECTIONAL); |
1775 | 1775 |
drivers/net/e1000/e1000_main.c
... | ... | @@ -4224,9 +4224,12 @@ |
4224 | 4224 | netdev_alloc_skb(netdev, length + NET_IP_ALIGN); |
4225 | 4225 | if (new_skb) { |
4226 | 4226 | skb_reserve(new_skb, NET_IP_ALIGN); |
4227 | - memcpy(new_skb->data - NET_IP_ALIGN, | |
4228 | - skb->data - NET_IP_ALIGN, | |
4229 | - length + NET_IP_ALIGN); | |
4227 | + skb_copy_to_linear_data_offset(new_skb, | |
4228 | + -NET_IP_ALIGN, | |
4229 | + (skb->data - | |
4230 | + NET_IP_ALIGN), | |
4231 | + (length + | |
4232 | + NET_IP_ALIGN)); | |
4230 | 4233 | /* save the skb in buffer_info as good */ |
4231 | 4234 | buffer_info->skb = skb; |
4232 | 4235 | skb = new_skb; |
drivers/net/ehea/ehea_main.c
... | ... | @@ -391,8 +391,8 @@ |
391 | 391 | if (!skb) |
392 | 392 | break; |
393 | 393 | } |
394 | - memcpy(skb->data, ((char*)cqe) + 64, | |
395 | - cqe->num_bytes_transfered - 4); | |
394 | + skb_copy_to_linear_data(skb, ((char*)cqe) + 64, | |
395 | + cqe->num_bytes_transfered - 4); | |
396 | 396 | ehea_fill_skb(dev, skb, cqe); |
397 | 397 | } else if (rq == 2) { /* RQ2 */ |
398 | 398 | skb = get_skb_by_index(skb_arr_rq2, |
drivers/net/irda/ali-ircc.c
... | ... | @@ -1923,7 +1923,7 @@ |
1923 | 1923 | |
1924 | 1924 | /* Copy frame without CRC, CRC is removed by hardware*/ |
1925 | 1925 | skb_put(skb, len); |
1926 | - memcpy(skb->data, self->rx_buff.data, len); | |
1926 | + skb_copy_to_linear_data(skb, self->rx_buff.data, len); | |
1927 | 1927 | |
1928 | 1928 | /* Move to next frame */ |
1929 | 1929 | self->rx_buff.data += len; |
drivers/net/irda/au1k_ir.c
... | ... | @@ -604,7 +604,7 @@ |
604 | 604 | skb_put(skb, count); |
605 | 605 | else |
606 | 606 | skb_put(skb, count-2); |
607 | - memcpy(skb->data, (void *)pDB->vaddr, count-2); | |
607 | + skb_copy_to_linear_data(skb, pDB->vaddr, count - 2); | |
608 | 608 | skb->dev = dev; |
609 | 609 | skb_reset_mac_header(skb); |
610 | 610 | skb->protocol = htons(ETH_P_IRDA); |
drivers/net/irda/donauboe.c
... | ... | @@ -1282,8 +1282,8 @@ |
1282 | 1282 | skb_reserve (skb, 1); |
1283 | 1283 | |
1284 | 1284 | skb_put (skb, len); |
1285 | - memcpy (skb->data, self->rx_bufs[self->rxs], len); | |
1286 | - | |
1285 | + skb_copy_to_linear_data(skb, self->rx_bufs[self->rxs], | |
1286 | + len); | |
1287 | 1287 | self->stats.rx_packets++; |
1288 | 1288 | skb->dev = self->netdev; |
1289 | 1289 | skb_reset_mac_header(skb); |
drivers/net/irda/mcs7780.c
... | ... | @@ -426,7 +426,7 @@ |
426 | 426 | } |
427 | 427 | |
428 | 428 | skb_reserve(skb, 1); |
429 | - memcpy(skb->data, buf, new_len); | |
429 | + skb_copy_to_linear_data(skb, buf, new_len); | |
430 | 430 | skb_put(skb, new_len); |
431 | 431 | skb_reset_mac_header(skb); |
432 | 432 | skb->protocol = htons(ETH_P_IRDA); |
... | ... | @@ -479,7 +479,7 @@ |
479 | 479 | } |
480 | 480 | |
481 | 481 | skb_reserve(skb, 1); |
482 | - memcpy(skb->data, buf, new_len); | |
482 | + skb_copy_to_linear_data(skb, buf, new_len); | |
483 | 483 | skb_put(skb, new_len); |
484 | 484 | skb_reset_mac_header(skb); |
485 | 485 | skb->protocol = htons(ETH_P_IRDA); |
drivers/net/irda/nsc-ircc.c
... | ... | @@ -1868,10 +1868,14 @@ |
1868 | 1868 | /* Copy frame without CRC */ |
1869 | 1869 | if (self->io.speed < 4000000) { |
1870 | 1870 | skb_put(skb, len-2); |
1871 | - memcpy(skb->data, self->rx_buff.data, len-2); | |
1871 | + skb_copy_to_linear_data(skb, | |
1872 | + self->rx_buff.data, | |
1873 | + len - 2); | |
1872 | 1874 | } else { |
1873 | 1875 | skb_put(skb, len-4); |
1874 | - memcpy(skb->data, self->rx_buff.data, len-4); | |
1876 | + skb_copy_to_linear_data(skb, | |
1877 | + self->rx_buff.data, | |
1878 | + len - 4); | |
1875 | 1879 | } |
1876 | 1880 | |
1877 | 1881 | /* Move to next frame */ |
drivers/net/irda/pxaficp_ir.c
drivers/net/irda/stir4200.c
drivers/net/irda/via-ircc.c
... | ... | @@ -1189,7 +1189,7 @@ |
1189 | 1189 | skb_reserve(skb, 1); |
1190 | 1190 | skb_put(skb, len - 4); |
1191 | 1191 | |
1192 | - memcpy(skb->data, self->rx_buff.data, len - 4); | |
1192 | + skb_copy_to_linear_data(skb, self->rx_buff.data, len - 4); | |
1193 | 1193 | IRDA_DEBUG(2, "%s(): len=%x.rx_buff=%p\n", __FUNCTION__, |
1194 | 1194 | len - 4, self->rx_buff.data); |
1195 | 1195 | |
... | ... | @@ -1234,7 +1234,7 @@ |
1234 | 1234 | } |
1235 | 1235 | skb_reserve(skb, 1); |
1236 | 1236 | skb_put(skb, len - 4 + 1); |
1237 | - memcpy(skb->data, self->rx_buff.data, len - 4 + 1); | |
1237 | + skb_copy_to_linear_data(skb, self->rx_buff.data, len - 4 + 1); | |
1238 | 1238 | st_fifo->tail++; |
1239 | 1239 | st_fifo->len++; |
1240 | 1240 | if (st_fifo->tail > MAX_RX_WINDOW) |
... | ... | @@ -1303,7 +1303,7 @@ |
1303 | 1303 | } |
1304 | 1304 | skb_reserve(skb, 1); |
1305 | 1305 | skb_put(skb, len - 4); |
1306 | - memcpy(skb->data, self->rx_buff.data, len - 4); | |
1306 | + skb_copy_to_linear_data(skb, self->rx_buff.data, len - 4); | |
1307 | 1307 | |
1308 | 1308 | IRDA_DEBUG(2, "%s(): len=%x.head=%x\n", __FUNCTION__, |
1309 | 1309 | len - 4, st_fifo->head); |
drivers/net/irda/w83977af_ir.c
... | ... | @@ -908,10 +908,14 @@ |
908 | 908 | /* Copy frame without CRC */ |
909 | 909 | if (self->io.speed < 4000000) { |
910 | 910 | skb_put(skb, len-2); |
911 | - memcpy(skb->data, self->rx_buff.data, len-2); | |
911 | + skb_copy_to_linear_data(skb, | |
912 | + self->rx_buff.data, | |
913 | + len - 2); | |
912 | 914 | } else { |
913 | 915 | skb_put(skb, len-4); |
914 | - memcpy(skb->data, self->rx_buff.data, len-4); | |
916 | + skb_copy_to_linear_data(skb, | |
917 | + self->rx_buff.data, | |
918 | + len - 4); | |
915 | 919 | } |
916 | 920 | |
917 | 921 | /* Move to next frame */ |
drivers/net/ixgb/ixgb_main.c
... | ... | @@ -2017,9 +2017,12 @@ |
2017 | 2017 | netdev_alloc_skb(netdev, length + NET_IP_ALIGN); |
2018 | 2018 | if (new_skb) { |
2019 | 2019 | skb_reserve(new_skb, NET_IP_ALIGN); |
2020 | - memcpy(new_skb->data - NET_IP_ALIGN, | |
2021 | - skb->data - NET_IP_ALIGN, | |
2022 | - length + NET_IP_ALIGN); | |
2020 | + skb_copy_to_linear_data_offset(new_skb, | |
2021 | + -NET_IP_ALIGN, | |
2022 | + (skb->data - | |
2023 | + NET_IP_ALIGN), | |
2024 | + (length + | |
2025 | + NET_IP_ALIGN)); | |
2023 | 2026 | /* save the skb in buffer_info as good */ |
2024 | 2027 | buffer_info->skb = skb; |
2025 | 2028 | skb = new_skb; |
drivers/net/loopback.c
... | ... | @@ -94,7 +94,8 @@ |
94 | 94 | skb_set_mac_header(nskb, -ETH_HLEN); |
95 | 95 | skb_reset_network_header(nskb); |
96 | 96 | iph = ip_hdr(nskb); |
97 | - memcpy(nskb->data, skb_network_header(skb), doffset); | |
97 | + skb_copy_to_linear_data(nskb, skb_network_header(skb), | |
98 | + doffset); | |
98 | 99 | if (skb_copy_bits(skb, |
99 | 100 | doffset + offset, |
100 | 101 | nskb->data + doffset, |
drivers/net/macb.c
... | ... | @@ -367,9 +367,10 @@ |
367 | 367 | BUG_ON(frag != last_frag); |
368 | 368 | frag_len = len - offset; |
369 | 369 | } |
370 | - memcpy(skb->data + offset, | |
371 | - bp->rx_buffers + (RX_BUFFER_SIZE * frag), | |
372 | - frag_len); | |
370 | + skb_copy_to_linear_data_offset(skb, offset, | |
371 | + (bp->rx_buffers + | |
372 | + (RX_BUFFER_SIZE * frag)), | |
373 | + frag_len); | |
373 | 374 | offset += RX_BUFFER_SIZE; |
374 | 375 | bp->rx_ring[frag].addr &= ~MACB_BIT(RX_USED); |
375 | 376 | wmb(); |
drivers/net/myri10ge/myri10ge.c
... | ... | @@ -879,7 +879,7 @@ |
879 | 879 | * skb_pull() (for ether_pad and eth_type_trans()) requires |
880 | 880 | * the beginning of the packet in skb_headlen(), move it |
881 | 881 | * manually */ |
882 | - memcpy(skb->data, va, hlen); | |
882 | + skb_copy_to_linear_data(skb, va, hlen); | |
883 | 883 | skb_shinfo(skb)->frags[0].page_offset += hlen; |
884 | 884 | skb_shinfo(skb)->frags[0].size -= hlen; |
885 | 885 | skb->data_len -= hlen; |
drivers/net/sk98lin/skge.c
... | ... | @@ -2127,7 +2127,7 @@ |
2127 | 2127 | (dma_addr_t) PhysAddr, |
2128 | 2128 | FrameLength, |
2129 | 2129 | PCI_DMA_FROMDEVICE); |
2130 | - memcpy(pNewMsg->data, pMsg, FrameLength); | |
2130 | + skb_copy_to_linear_data(pNewMsg, pMsg, FrameLength); | |
2131 | 2131 | |
2132 | 2132 | pci_dma_sync_single_for_device(pAC->PciDev, |
2133 | 2133 | (dma_addr_t) PhysAddr, |
drivers/net/skfp/skfddi.c
... | ... | @@ -1937,7 +1937,7 @@ |
1937 | 1937 | } |
1938 | 1938 | skb_reserve(skb, 3); |
1939 | 1939 | skb_put(skb, len); |
1940 | - memcpy(skb->data, look_ahead, len); | |
1940 | + skb_copy_to_linear_data(skb, look_ahead, len); | |
1941 | 1941 | |
1942 | 1942 | // deliver frame to system |
1943 | 1943 | skb->protocol = fddi_type_trans(skb, smc->os.dev); |
drivers/net/sun3lance.c
... | ... | @@ -853,7 +853,7 @@ |
853 | 853 | |
854 | 854 | skb_reserve( skb, 2 ); /* 16 byte align */ |
855 | 855 | skb_put( skb, pkt_len ); /* Make room */ |
856 | -// memcpy( skb->data, PKTBUF_ADDR(head), pkt_len ); | |
856 | +// skb_copy_to_linear_data(skb, PKTBUF_ADDR(head), pkt_len); | |
857 | 857 | eth_copy_and_sum(skb, |
858 | 858 | PKTBUF_ADDR(head), |
859 | 859 | pkt_len, 0); |
drivers/net/tokenring/smctr.c
... | ... | @@ -3889,7 +3889,7 @@ |
3889 | 3889 | |
3890 | 3890 | /* Slide data into a sleek skb. */ |
3891 | 3891 | skb_put(skb, skb->len); |
3892 | - memcpy(skb->data, rmf, skb->len); | |
3892 | + skb_copy_to_linear_data(skb, rmf, skb->len); | |
3893 | 3893 | |
3894 | 3894 | /* Update Counters */ |
3895 | 3895 | tp->MacStat.rx_packets++; |
... | ... | @@ -4475,7 +4475,7 @@ |
4475 | 4475 | if (skb) { |
4476 | 4476 | skb_put(skb, rx_size); |
4477 | 4477 | |
4478 | - memcpy(skb->data, pbuff, rx_size); | |
4478 | + skb_copy_to_linear_data(skb, pbuff, rx_size); | |
4479 | 4479 | |
4480 | 4480 | /* Update Counters */ |
4481 | 4481 | tp->MacStat.rx_packets++; |
drivers/net/tokenring/tms380tr.c
... | ... | @@ -2178,7 +2178,8 @@ |
2178 | 2178 | || rpl->SkbStat == SKB_DMA_DIRECT)) |
2179 | 2179 | { |
2180 | 2180 | if(rpl->SkbStat == SKB_DATA_COPY) |
2181 | - memcpy(skb->data, ReceiveDataPtr, Length); | |
2181 | + skb_copy_to_linear_data(skb, ReceiveDataPtr, | |
2182 | + Length); | |
2182 | 2183 | |
2183 | 2184 | /* Deliver frame to system */ |
2184 | 2185 | rpl->Skb = NULL; |
drivers/net/wan/dscc4.c
... | ... | @@ -1904,7 +1904,8 @@ |
1904 | 1904 | struct TxFD *tx_fd = dpriv->tx_fd + last; |
1905 | 1905 | |
1906 | 1906 | skb->len = DUMMY_SKB_SIZE; |
1907 | - memcpy(skb->data, version, strlen(version)%DUMMY_SKB_SIZE); | |
1907 | + skb_copy_to_linear_data(skb, version, | |
1908 | + strlen(version) % DUMMY_SKB_SIZE); | |
1908 | 1909 | tx_fd->state = FrameEnd | TO_STATE_TX(DUMMY_SKB_SIZE); |
1909 | 1910 | tx_fd->data = pci_map_single(dpriv->pci_priv->pdev, skb->data, |
1910 | 1911 | DUMMY_SKB_SIZE, PCI_DMA_TODEVICE); |
drivers/net/wan/pc300_drv.c
... | ... | @@ -1759,7 +1759,7 @@ |
1759 | 1759 | skb->pkt_type = PACKET_HOST; |
1760 | 1760 | skb->len = 10 + skb_main->len; |
1761 | 1761 | |
1762 | - memcpy(skb->data, dev->name, 5); | |
1762 | + skb_copy_to_linear_data(skb, dev->name, 5); | |
1763 | 1763 | skb->data[5] = '['; |
1764 | 1764 | skb->data[6] = rx_tx; |
1765 | 1765 | skb->data[7] = ']'; |
drivers/net/wan/pc300_tty.c
... | ... | @@ -1007,13 +1007,13 @@ |
1007 | 1007 | skb->pkt_type = PACKET_HOST; |
1008 | 1008 | skb->len = 10 + len; |
1009 | 1009 | |
1010 | - memcpy(skb->data,dev->dev->name,5); | |
1010 | + skb_copy_to_linear_data(skb, dev->dev->name, 5); | |
1011 | 1011 | skb->data[5] = '['; |
1012 | 1012 | skb->data[6] = rxtx; |
1013 | 1013 | skb->data[7] = ']'; |
1014 | 1014 | skb->data[8] = ':'; |
1015 | 1015 | skb->data[9] = ' '; |
1016 | - memcpy(&skb->data[10], buf, len); | |
1016 | + skb_copy_to_linear_data_offset(skb, 10, buf, len); | |
1017 | 1017 | netif_rx(skb); |
1018 | 1018 | } |
1019 | 1019 |
drivers/net/wan/z85230.c
drivers/net/wireless/prism54/islpci_eth.c
... | ... | @@ -136,7 +136,7 @@ |
136 | 136 | printk("islpci_eth_transmit:wds_mac\n"); |
137 | 137 | #endif |
138 | 138 | memmove(skb->data + 6, src, skb->len); |
139 | - memcpy(skb->data, wds_mac, 6); | |
139 | + skb_copy_to_linear_data(skb, wds_mac, 6); | |
140 | 140 | } else { |
141 | 141 | memmove(skb->data, src, skb->len); |
142 | 142 | } |
... | ... | @@ -165,7 +165,7 @@ |
165 | 165 | skb_copy_from_linear_data(skb, |
166 | 166 | newskb->data + 6, |
167 | 167 | skb->len); |
168 | - memcpy(newskb->data, wds_mac, 6); | |
168 | + skb_copy_to_linear_data(newskb, wds_mac, 6); | |
169 | 169 | #ifdef ISLPCI_ETH_DEBUG |
170 | 170 | printk("islpci_eth_transmit:wds_mac\n"); |
171 | 171 | #endif |
drivers/s390/net/qeth_main.c
... | ... | @@ -2501,7 +2501,8 @@ |
2501 | 2501 | vlan_tag = qeth_rebuild_skb(card, skb, hdr); |
2502 | 2502 | else { /*in case of OSN*/ |
2503 | 2503 | skb_push(skb, sizeof(struct qeth_hdr)); |
2504 | - memcpy(skb->data, hdr, sizeof(struct qeth_hdr)); | |
2504 | + skb_copy_to_linear_data(skb, hdr, | |
2505 | + sizeof(struct qeth_hdr)); | |
2505 | 2506 | } |
2506 | 2507 | /* is device UP ? */ |
2507 | 2508 | if (!(card->dev->flags & IFF_UP)){ |
... | ... | @@ -3870,9 +3871,9 @@ |
3870 | 3871 | * memcpys instead of one memmove to save cycles. |
3871 | 3872 | */ |
3872 | 3873 | skb_push(skb, VLAN_HLEN); |
3873 | - memcpy(skb->data, skb->data + 4, 4); | |
3874 | - memcpy(skb->data + 4, skb->data + 8, 4); | |
3875 | - memcpy(skb->data + 8, skb->data + 12, 4); | |
3874 | + skb_copy_to_linear_data(skb, skb->data + 4, 4); | |
3875 | + skb_copy_to_linear_data_offset(skb, 4, skb->data + 8, 4); | |
3876 | + skb_copy_to_linear_data_offset(skb, 8, skb->data + 12, 4); | |
3876 | 3877 | tag = (u16 *)(skb->data + 12); |
3877 | 3878 | /* |
3878 | 3879 | * first two bytes = ETH_P_8021Q (0x8100) |
drivers/usb/atm/usbatm.c
... | ... | @@ -396,7 +396,9 @@ |
396 | 396 | goto out; /* atm_charge increments rx_drop */ |
397 | 397 | } |
398 | 398 | |
399 | - memcpy(skb->data, skb_tail_pointer(sarb) - pdu_length, length); | |
399 | + skb_copy_to_linear_data(skb, | |
400 | + skb_tail_pointer(sarb) - pdu_length, | |
401 | + length); | |
400 | 402 | __skb_put(skb, length); |
401 | 403 | |
402 | 404 | vdbg("%s: sending skb 0x%p, skb->len %u, skb->truesize %u", |
drivers/usb/net/asix.c
... | ... | @@ -352,7 +352,7 @@ |
352 | 352 | skb_push(skb, 4); |
353 | 353 | packet_len = (((skb->len - 4) ^ 0x0000ffff) << 16) + (skb->len - 4); |
354 | 354 | cpu_to_le32s(&packet_len); |
355 | - memcpy(skb->data, &packet_len, sizeof(packet_len)); | |
355 | + skb_copy_to_linear_data(skb, &packet_len, sizeof(packet_len)); | |
356 | 356 | |
357 | 357 | if ((skb->len % 512) == 0) { |
358 | 358 | cpu_to_le32s(&padbytes); |
include/linux/skbuff.h
... | ... | @@ -1521,6 +1521,21 @@ |
1521 | 1521 | memcpy(to, skb->data + offset, len); |
1522 | 1522 | } |
1523 | 1523 | |
1524 | +static inline void skb_copy_to_linear_data(struct sk_buff *skb, | |
1525 | + const void *from, | |
1526 | + const unsigned int len) | |
1527 | +{ | |
1528 | + memcpy(skb->data, from, len); | |
1529 | +} | |
1530 | + | |
1531 | +static inline void skb_copy_to_linear_data_offset(struct sk_buff *skb, | |
1532 | + const int offset, | |
1533 | + const void *from, | |
1534 | + const unsigned int len) | |
1535 | +{ | |
1536 | + memcpy(skb->data + offset, from, len); | |
1537 | +} | |
1538 | + | |
1524 | 1539 | extern void skb_init(void); |
1525 | 1540 | |
1526 | 1541 | /** |
net/atm/br2684.c
net/atm/lec.c
... | ... | @@ -576,8 +576,8 @@ |
576 | 576 | break; |
577 | 577 | } |
578 | 578 | skb2->len = sizeof(struct atmlec_msg); |
579 | - memcpy(skb2->data, mesg, | |
580 | - sizeof(struct atmlec_msg)); | |
579 | + skb_copy_to_linear_data(skb2, mesg, | |
580 | + sizeof(*mesg)); | |
581 | 581 | atm_force_charge(priv->lecd, skb2->truesize); |
582 | 582 | sk = sk_atm(priv->lecd); |
583 | 583 | skb_queue_tail(&sk->sk_receive_queue, skb2); |
... | ... | @@ -1337,7 +1337,7 @@ |
1337 | 1337 | if (skb == NULL) |
1338 | 1338 | return -1; |
1339 | 1339 | skb->len = *sizeoftlvs; |
1340 | - memcpy(skb->data, *tlvs, *sizeoftlvs); | |
1340 | + skb_copy_to_linear_data(skb, *tlvs, *sizeoftlvs); | |
1341 | 1341 | retval = send_to_lecd(priv, l_arp_xmt, dst_mac, NULL, skb); |
1342 | 1342 | } |
1343 | 1343 | return retval; |
... | ... | @@ -1371,7 +1371,7 @@ |
1371 | 1371 | if (skb == NULL) |
1372 | 1372 | return 0; |
1373 | 1373 | skb->len = sizeoftlvs; |
1374 | - memcpy(skb->data, tlvs, sizeoftlvs); | |
1374 | + skb_copy_to_linear_data(skb, tlvs, sizeoftlvs); | |
1375 | 1375 | retval = send_to_lecd(priv, l_associate_req, NULL, NULL, skb); |
1376 | 1376 | if (retval != 0) |
1377 | 1377 | printk("lec.c: lane2_associate_req() failed\n"); |
net/atm/mpc.c
... | ... | @@ -504,11 +504,13 @@ |
504 | 504 | tagged_llc_snap_hdr.tag = entry->ctrl_info.tag; |
505 | 505 | skb_pull(skb, ETH_HLEN); /* get rid of Eth header */ |
506 | 506 | skb_push(skb, sizeof(tagged_llc_snap_hdr)); /* add LLC/SNAP header */ |
507 | - memcpy(skb->data, &tagged_llc_snap_hdr, sizeof(tagged_llc_snap_hdr)); | |
507 | + skb_copy_to_linear_data(skb, &tagged_llc_snap_hdr, | |
508 | + sizeof(tagged_llc_snap_hdr)); | |
508 | 509 | } else { |
509 | 510 | skb_pull(skb, ETH_HLEN); /* get rid of Eth header */ |
510 | 511 | skb_push(skb, sizeof(struct llc_snap_hdr)); /* add LLC/SNAP header + tag */ |
511 | - memcpy(skb->data, &llc_snap_mpoa_data, sizeof(struct llc_snap_hdr)); | |
512 | + skb_copy_to_linear_data(skb, &llc_snap_mpoa_data, | |
513 | + sizeof(struct llc_snap_hdr)); | |
512 | 514 | } |
513 | 515 | |
514 | 516 | atomic_add(skb->truesize, &sk_atm(entry->shortcut)->sk_wmem_alloc); |
... | ... | @@ -711,7 +713,8 @@ |
711 | 713 | return; |
712 | 714 | } |
713 | 715 | skb_push(new_skb, eg->ctrl_info.DH_length); /* add MAC header */ |
714 | - memcpy(new_skb->data, eg->ctrl_info.DLL_header, eg->ctrl_info.DH_length); | |
716 | + skb_copy_to_linear_data(new_skb, eg->ctrl_info.DLL_header, | |
717 | + eg->ctrl_info.DH_length); | |
715 | 718 | new_skb->protocol = eth_type_trans(new_skb, dev); |
716 | 719 | skb_reset_network_header(new_skb); |
717 | 720 | |
... | ... | @@ -936,7 +939,7 @@ |
936 | 939 | if (skb == NULL) |
937 | 940 | return -ENOMEM; |
938 | 941 | skb_put(skb, sizeof(struct k_message)); |
939 | - memcpy(skb->data, mesg, sizeof(struct k_message)); | |
942 | + skb_copy_to_linear_data(skb, mesg, sizeof(*mesg)); | |
940 | 943 | atm_force_charge(mpc->mpoad_vcc, skb->truesize); |
941 | 944 | |
942 | 945 | sk = sk_atm(mpc->mpoad_vcc); |
net/bridge/br_netfilter.c
... | ... | @@ -149,7 +149,8 @@ |
149 | 149 | if (err) |
150 | 150 | return err; |
151 | 151 | |
152 | - memcpy(skb->data - header_size, skb->nf_bridge->data, header_size); | |
152 | + skb_copy_to_linear_data_offset(skb, -header_size, | |
153 | + skb->nf_bridge->data, header_size); | |
153 | 154 | |
154 | 155 | if (skb->protocol == htons(ETH_P_8021Q)) |
155 | 156 | __skb_push(skb, VLAN_HLEN); |
net/core/netpoll.c
net/core/skbuff.c
... | ... | @@ -1129,7 +1129,7 @@ |
1129 | 1129 | if ((copy = start - offset) > 0) { |
1130 | 1130 | if (copy > len) |
1131 | 1131 | copy = len; |
1132 | - memcpy(skb->data + offset, from, copy); | |
1132 | + skb_copy_to_linear_data_offset(skb, offset, from, copy); | |
1133 | 1133 | if ((len -= copy) == 0) |
1134 | 1134 | return 0; |
1135 | 1135 | offset += copy; |
net/ieee80211/ieee80211_rx.c
... | ... | @@ -759,8 +759,9 @@ |
759 | 759 | IEEE80211_FCTL_TODS) && skb->len >= ETH_HLEN + ETH_ALEN) { |
760 | 760 | /* Non-standard frame: get addr4 from its bogus location after |
761 | 761 | * the payload */ |
762 | - memcpy(skb->data + ETH_ALEN, | |
763 | - skb->data + skb->len - ETH_ALEN, ETH_ALEN); | |
762 | + skb_copy_to_linear_data_offset(skb, ETH_ALEN, | |
763 | + skb->data + skb->len - ETH_ALEN, | |
764 | + ETH_ALEN); | |
764 | 765 | skb_trim(skb, skb->len - ETH_ALEN); |
765 | 766 | } |
766 | 767 | #endif |
net/ipv4/ipcomp.c
net/ipv4/ipmr.c
... | ... | @@ -584,7 +584,7 @@ |
584 | 584 | |
585 | 585 | skb->network_header = skb->tail; |
586 | 586 | skb_put(skb, ihl); |
587 | - memcpy(skb->data,pkt->data,ihl); | |
587 | + skb_copy_to_linear_data(skb, pkt->data, ihl); | |
588 | 588 | ip_hdr(skb)->protocol = 0; /* Flag to the kernel this is a route add */ |
589 | 589 | msg = (struct igmpmsg *)skb_network_header(skb); |
590 | 590 | msg->im_vif = vifi; |
net/ipv4/ipvs/ip_vs_app.c
... | ... | @@ -602,7 +602,7 @@ |
602 | 602 | skb_put(skb, diff); |
603 | 603 | memmove(skb->data + o_offset + n_len, |
604 | 604 | skb->data + o_offset + o_len, o_left); |
605 | - memcpy(skb->data + o_offset, n_buf, n_len); | |
605 | + skb_copy_to_linear_data_offset(skb, o_offset, n_buf, n_len); | |
606 | 606 | } |
607 | 607 | |
608 | 608 | /* must update the iph total length here */ |
net/ipv4/netfilter/ip_queue.c
... | ... | @@ -368,7 +368,7 @@ |
368 | 368 | } |
369 | 369 | if (!skb_make_writable(&e->skb, v->data_len)) |
370 | 370 | return -ENOMEM; |
371 | - memcpy(e->skb->data, v->payload, v->data_len); | |
371 | + skb_copy_to_linear_data(e->skb, v->payload, v->data_len); | |
372 | 372 | e->skb->ip_summed = CHECKSUM_NONE; |
373 | 373 | |
374 | 374 | return 0; |
net/ipv6/ipcomp6.c
net/ipv6/netfilter/ip6_queue.c
... | ... | @@ -366,7 +366,7 @@ |
366 | 366 | } |
367 | 367 | if (!skb_make_writable(&e->skb, v->data_len)) |
368 | 368 | return -ENOMEM; |
369 | - memcpy(e->skb->data, v->payload, v->data_len); | |
369 | + skb_copy_to_linear_data(e->skb, v->payload, v->data_len); | |
370 | 370 | e->skb->ip_summed = CHECKSUM_NONE; |
371 | 371 | |
372 | 372 | return 0; |
net/irda/irttp.c
... | ... | @@ -256,7 +256,7 @@ |
256 | 256 | * Copy all fragments to a new buffer |
257 | 257 | */ |
258 | 258 | while ((frag = skb_dequeue(&self->rx_fragments)) != NULL) { |
259 | - memcpy(skb->data+n, frag->data, frag->len); | |
259 | + skb_copy_to_linear_data_offset(skb, n, frag->data, frag->len); | |
260 | 260 | n += frag->len; |
261 | 261 | |
262 | 262 | dev_kfree_skb(frag); |
net/irda/wrapper.c
... | ... | @@ -239,7 +239,8 @@ |
239 | 239 | |
240 | 240 | if(docopy) { |
241 | 241 | /* Copy data without CRC (lenght already checked) */ |
242 | - memcpy(newskb->data, rx_buff->data, rx_buff->len - 2); | |
242 | + skb_copy_to_linear_data(newskb, rx_buff->data, | |
243 | + rx_buff->len - 2); | |
243 | 244 | /* Deliver this skb */ |
244 | 245 | dataskb = newskb; |
245 | 246 | } else { |
net/netfilter/nfnetlink_queue.c
net/netrom/nr_out.c
... | ... | @@ -59,8 +59,8 @@ |
59 | 59 | |
60 | 60 | /* Duplicate the Transport Header */ |
61 | 61 | skb_push(skbn, NR_TRANSPORT_LEN); |
62 | - memcpy(skbn->data, transport, NR_TRANSPORT_LEN); | |
63 | - | |
62 | + skb_copy_to_linear_data(skbn, transport, | |
63 | + NR_TRANSPORT_LEN); | |
64 | 64 | if (skb->len > 0) |
65 | 65 | skbn->data[4] |= NR_MORE_FLAG; |
66 | 66 |
net/rose/af_rose.c
net/tipc/link.c
... | ... | @@ -1001,7 +1001,7 @@ |
1001 | 1001 | return 0; |
1002 | 1002 | |
1003 | 1003 | skb_put(bundler, pad + size); |
1004 | - memcpy(bundler->data + to_pos, buf->data, size); | |
1004 | + skb_copy_to_linear_data_offset(bundler, to_pos, buf->data, size); | |
1005 | 1005 | msg_set_size(bundler_msg, to_pos + size); |
1006 | 1006 | msg_set_msgcnt(bundler_msg, msg_msgcnt(bundler_msg) + 1); |
1007 | 1007 | dbg("Packed msg # %u(%u octets) into pos %u in buf(#%u)\n", |
... | ... | @@ -1109,8 +1109,8 @@ |
1109 | 1109 | if (bundler) { |
1110 | 1110 | msg_init(&bundler_hdr, MSG_BUNDLER, OPEN_MSG, |
1111 | 1111 | TIPC_OK, INT_H_SIZE, l_ptr->addr); |
1112 | - memcpy(bundler->data, (unchar *)&bundler_hdr, | |
1113 | - INT_H_SIZE); | |
1112 | + skb_copy_to_linear_data(bundler, &bundler_hdr, | |
1113 | + INT_H_SIZE); | |
1114 | 1114 | skb_trim(bundler, INT_H_SIZE); |
1115 | 1115 | link_bundle_buf(l_ptr, bundler, buf); |
1116 | 1116 | buf = bundler; |
1117 | 1117 | |
... | ... | @@ -1383,9 +1383,9 @@ |
1383 | 1383 | if (!buf) |
1384 | 1384 | return -ENOMEM; |
1385 | 1385 | buf->next = NULL; |
1386 | - memcpy(buf->data, (unchar *)&fragm_hdr, INT_H_SIZE); | |
1386 | + skb_copy_to_linear_data(buf, &fragm_hdr, INT_H_SIZE); | |
1387 | 1387 | hsz = msg_hdr_sz(hdr); |
1388 | - memcpy(buf->data + INT_H_SIZE, (unchar *)hdr, hsz); | |
1388 | + skb_copy_to_linear_data_offset(buf, INT_H_SIZE, hdr, hsz); | |
1389 | 1389 | msg_dbg(buf_msg(buf), ">BUILD>"); |
1390 | 1390 | |
1391 | 1391 | /* Chop up message: */ |
... | ... | @@ -1416,8 +1416,8 @@ |
1416 | 1416 | return -EFAULT; |
1417 | 1417 | } |
1418 | 1418 | } else |
1419 | - memcpy(buf->data + fragm_crs, sect_crs, sz); | |
1420 | - | |
1419 | + skb_copy_to_linear_data_offset(buf, fragm_crs, | |
1420 | + sect_crs, sz); | |
1421 | 1421 | sect_crs += sz; |
1422 | 1422 | sect_rest -= sz; |
1423 | 1423 | fragm_crs += sz; |
... | ... | @@ -1442,7 +1442,7 @@ |
1442 | 1442 | |
1443 | 1443 | buf->next = NULL; |
1444 | 1444 | prev->next = buf; |
1445 | - memcpy(buf->data, (unchar *)&fragm_hdr, INT_H_SIZE); | |
1445 | + skb_copy_to_linear_data(buf, &fragm_hdr, INT_H_SIZE); | |
1446 | 1446 | fragm_crs = INT_H_SIZE; |
1447 | 1447 | fragm_rest = fragm_sz; |
1448 | 1448 | msg_dbg(buf_msg(buf)," >BUILD>"); |
... | ... | @@ -2130,7 +2130,7 @@ |
2130 | 2130 | buf = l_ptr->proto_msg_queue; |
2131 | 2131 | if (!buf) |
2132 | 2132 | return; |
2133 | - memcpy(buf->data, (unchar *)msg, sizeof(l_ptr->proto_msg)); | |
2133 | + skb_copy_to_linear_data(buf, msg, sizeof(l_ptr->proto_msg)); | |
2134 | 2134 | return; |
2135 | 2135 | } |
2136 | 2136 | msg_set_timestamp(msg, jiffies_to_msecs(jiffies)); |
... | ... | @@ -2143,7 +2143,7 @@ |
2143 | 2143 | if (!buf) |
2144 | 2144 | return; |
2145 | 2145 | |
2146 | - memcpy(buf->data, (unchar *)msg, sizeof(l_ptr->proto_msg)); | |
2146 | + skb_copy_to_linear_data(buf, msg, sizeof(l_ptr->proto_msg)); | |
2147 | 2147 | msg_set_size(buf_msg(buf), msg_size); |
2148 | 2148 | |
2149 | 2149 | if (tipc_bearer_send(l_ptr->b_ptr, buf, &l_ptr->media_addr)) { |
... | ... | @@ -2319,8 +2319,8 @@ |
2319 | 2319 | "unable to send tunnel msg\n"); |
2320 | 2320 | return; |
2321 | 2321 | } |
2322 | - memcpy(buf->data, (unchar *)tunnel_hdr, INT_H_SIZE); | |
2323 | - memcpy(buf->data + INT_H_SIZE, (unchar *)msg, length); | |
2322 | + skb_copy_to_linear_data(buf, tunnel_hdr, INT_H_SIZE); | |
2323 | + skb_copy_to_linear_data_offset(buf, INT_H_SIZE, msg, length); | |
2324 | 2324 | dbg("%c->%c:", l_ptr->b_ptr->net_plane, tunnel->b_ptr->net_plane); |
2325 | 2325 | msg_dbg(buf_msg(buf), ">SEND>"); |
2326 | 2326 | tipc_link_send_buf(tunnel, buf); |
... | ... | @@ -2361,7 +2361,7 @@ |
2361 | 2361 | |
2362 | 2362 | buf = buf_acquire(INT_H_SIZE); |
2363 | 2363 | if (buf) { |
2364 | - memcpy(buf->data, (unchar *)&tunnel_hdr, INT_H_SIZE); | |
2364 | + skb_copy_to_linear_data(buf, &tunnel_hdr, INT_H_SIZE); | |
2365 | 2365 | msg_set_size(&tunnel_hdr, INT_H_SIZE); |
2366 | 2366 | dbg("%c->%c:", l_ptr->b_ptr->net_plane, |
2367 | 2367 | tunnel->b_ptr->net_plane); |
... | ... | @@ -2426,8 +2426,9 @@ |
2426 | 2426 | "unable to send duplicate msg\n"); |
2427 | 2427 | return; |
2428 | 2428 | } |
2429 | - memcpy(outbuf->data, (unchar *)&tunnel_hdr, INT_H_SIZE); | |
2430 | - memcpy(outbuf->data + INT_H_SIZE, iter->data, length); | |
2429 | + skb_copy_to_linear_data(outbuf, &tunnel_hdr, INT_H_SIZE); | |
2430 | + skb_copy_to_linear_data_offset(outbuf, INT_H_SIZE, iter->data, | |
2431 | + length); | |
2431 | 2432 | dbg("%c->%c:", l_ptr->b_ptr->net_plane, |
2432 | 2433 | tunnel->b_ptr->net_plane); |
2433 | 2434 | msg_dbg(buf_msg(outbuf), ">SEND>"); |
... | ... | @@ -2457,7 +2458,7 @@ |
2457 | 2458 | |
2458 | 2459 | eb = buf_acquire(size); |
2459 | 2460 | if (eb) |
2460 | - memcpy(eb->data, (unchar *)msg, size); | |
2461 | + skb_copy_to_linear_data(eb, msg, size); | |
2461 | 2462 | return eb; |
2462 | 2463 | } |
2463 | 2464 | |
... | ... | @@ -2631,9 +2632,9 @@ |
2631 | 2632 | goto exit; |
2632 | 2633 | } |
2633 | 2634 | msg_set_size(&fragm_hdr, fragm_sz + INT_H_SIZE); |
2634 | - memcpy(fragm->data, (unchar *)&fragm_hdr, INT_H_SIZE); | |
2635 | - memcpy(fragm->data + INT_H_SIZE, crs, fragm_sz); | |
2636 | - | |
2635 | + skb_copy_to_linear_data(fragm, &fragm_hdr, INT_H_SIZE); | |
2636 | + skb_copy_to_linear_data_offset(fragm, INT_H_SIZE, crs, | |
2637 | + fragm_sz); | |
2637 | 2638 | /* Send queued messages first, if any: */ |
2638 | 2639 | |
2639 | 2640 | l_ptr->stats.sent_fragments++; |
... | ... | @@ -2733,8 +2734,8 @@ |
2733 | 2734 | if (pbuf != NULL) { |
2734 | 2735 | pbuf->next = *pending; |
2735 | 2736 | *pending = pbuf; |
2736 | - memcpy(pbuf->data, (unchar *)imsg, msg_data_sz(fragm)); | |
2737 | - | |
2737 | + skb_copy_to_linear_data(pbuf, imsg, | |
2738 | + msg_data_sz(fragm)); | |
2738 | 2739 | /* Prepare buffer for subsequent fragments. */ |
2739 | 2740 | |
2740 | 2741 | set_long_msg_seqno(pbuf, long_msg_seq_no); |
... | ... | @@ -2750,7 +2751,8 @@ |
2750 | 2751 | u32 fsz = get_fragm_size(pbuf); |
2751 | 2752 | u32 crs = ((msg_fragm_no(fragm) - 1) * fsz); |
2752 | 2753 | u32 exp_frags = get_expected_frags(pbuf) - 1; |
2753 | - memcpy(pbuf->data + crs, msg_data(fragm), dsz); | |
2754 | + skb_copy_to_linear_data_offset(pbuf, crs, | |
2755 | + msg_data(fragm), dsz); | |
2754 | 2756 | buf_discard(fbuf); |
2755 | 2757 | |
2756 | 2758 | /* Is message complete? */ |
net/tipc/msg.h
... | ... | @@ -786,15 +786,16 @@ |
786 | 786 | *buf = buf_acquire(sz); |
787 | 787 | if (!(*buf)) |
788 | 788 | return -ENOMEM; |
789 | - memcpy((*buf)->data, (unchar *)hdr, hsz); | |
789 | + skb_copy_to_linear_data(*buf, hdr, hsz); | |
790 | 790 | for (res = 1, cnt = 0; res && (cnt < num_sect); cnt++) { |
791 | 791 | if (likely(usrmem)) |
792 | 792 | res = !copy_from_user((*buf)->data + pos, |
793 | 793 | msg_sect[cnt].iov_base, |
794 | 794 | msg_sect[cnt].iov_len); |
795 | 795 | else |
796 | - memcpy((*buf)->data + pos, msg_sect[cnt].iov_base, | |
797 | - msg_sect[cnt].iov_len); | |
796 | + skb_copy_to_linear_data_offset(*buf, pos, | |
797 | + msg_sect[cnt].iov_base, | |
798 | + msg_sect[cnt].iov_len); | |
798 | 799 | pos += msg_sect[cnt].iov_len; |
799 | 800 | } |
800 | 801 | if (likely(res)) |
net/tipc/port.c
... | ... | @@ -464,7 +464,7 @@ |
464 | 464 | msg_set_size(rmsg, data_sz + hdr_sz); |
465 | 465 | msg_set_nametype(rmsg, msg_nametype(msg)); |
466 | 466 | msg_set_nameinst(rmsg, msg_nameinst(msg)); |
467 | - memcpy(rbuf->data + hdr_sz, msg_data(msg), data_sz); | |
467 | + skb_copy_to_linear_data_offset(rbuf, hdr_sz, msg_data(msg), data_sz); | |
468 | 468 | |
469 | 469 | /* send self-abort message when rejecting on a connected port */ |
470 | 470 | if (msg_connected(msg)) { |
... | ... | @@ -1419,7 +1419,7 @@ |
1419 | 1419 | return -ENOMEM; |
1420 | 1420 | |
1421 | 1421 | skb_push(buf, hsz); |
1422 | - memcpy(buf->data, (unchar *)msg, hsz); | |
1422 | + skb_copy_to_linear_data(buf, msg, hsz); | |
1423 | 1423 | destnode = msg_destnode(msg); |
1424 | 1424 | p_ptr->publ.congested = 1; |
1425 | 1425 | if (!tipc_port_congested(p_ptr)) { |
... | ... | @@ -1555,7 +1555,7 @@ |
1555 | 1555 | if (skb_cow(buf, LONG_H_SIZE)) |
1556 | 1556 | return -ENOMEM; |
1557 | 1557 | skb_push(buf, LONG_H_SIZE); |
1558 | - memcpy(buf->data, (unchar *)msg, LONG_H_SIZE); | |
1558 | + skb_copy_to_linear_data(buf, msg, LONG_H_SIZE); | |
1559 | 1559 | msg_dbg(buf_msg(buf),"PREP:"); |
1560 | 1560 | if (likely(destport || destnode)) { |
1561 | 1561 | p_ptr->sent++; |
... | ... | @@ -1679,7 +1679,7 @@ |
1679 | 1679 | return -ENOMEM; |
1680 | 1680 | |
1681 | 1681 | skb_push(buf, DIR_MSG_H_SIZE); |
1682 | - memcpy(buf->data, (unchar *)msg, DIR_MSG_H_SIZE); | |
1682 | + skb_copy_to_linear_data(buf, msg, DIR_MSG_H_SIZE); | |
1683 | 1683 | msg_dbg(msg, "buf2port: "); |
1684 | 1684 | p_ptr->sent++; |
1685 | 1685 | if (dest->node == tipc_own_addr) |
net/wanrouter/wanmain.c
... | ... | @@ -277,8 +277,8 @@ |
277 | 277 | skb_push(skb, 7); |
278 | 278 | skb->data[0] = 0; |
279 | 279 | skb->data[1] = NLPID_SNAP; |
280 | - memcpy(&skb->data[2], wanrouter_oui_ether, | |
281 | - sizeof(wanrouter_oui_ether)); | |
280 | + skb_copy_to_linear_data_offset(skb, 2, wanrouter_oui_ether, | |
281 | + sizeof(wanrouter_oui_ether)); | |
282 | 282 | *((unsigned short*)&skb->data[5]) = htons(type); |
283 | 283 | break; |
284 | 284 |
net/x25/x25_out.c