summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2017-06-16 08:29:20 -0400
committerDavid S. Miller <davem@davemloft.net>2017-06-16 11:48:37 -0400
commit59ae1d127ac0ae404baf414c434ba2651b793f46 (patch)
tree043e71496aa7a7db86bcc8219a3a51f533aac982
parentb080db585384b9f037e015c0c28d1ad33be41dfc (diff)
networking: introduce and use skb_put_data()
A common pattern with skb_put() is to just want to memcpy() some data into the new space, introduce skb_put_data() for this. An spatch similar to the one for skb_put_zero() converts many of the places using it: @@ identifier p, p2; expression len, skb, data; type t, t2; @@ ( -p = skb_put(skb, len); +p = skb_put_data(skb, data, len); | -p = (t)skb_put(skb, len); +p = skb_put_data(skb, data, len); ) ( p2 = (t2)p; -memcpy(p2, data, len); | -memcpy(p, data, len); ) @@ type t, t2; identifier p, p2; expression skb, data; @@ t *p; ... ( -p = skb_put(skb, sizeof(t)); +p = skb_put_data(skb, data, sizeof(t)); | -p = (t *)skb_put(skb, sizeof(t)); +p = skb_put_data(skb, data, sizeof(t)); ) ( p2 = (t2)p; -memcpy(p2, data, sizeof(*p)); | -memcpy(p, data, sizeof(*p)); ) @@ expression skb, len, data; @@ -memcpy(skb_put(skb, len), data, len); +skb_put_data(skb, data, len); (again, manually post-processed to retain some comments) Reviewed-by: Stephen Hemminger <stephen@networkplumber.org> Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/atm/fore200e.c2
-rw-r--r--drivers/atm/he.c2
-rw-r--r--drivers/atm/idt77252.c11
-rw-r--r--drivers/atm/solos-pci.c2
-rw-r--r--drivers/bluetooth/bfusb.c6
-rw-r--r--drivers/bluetooth/bluecard_cs.c2
-rw-r--r--drivers/bluetooth/btmrvl_main.c2
-rw-r--r--drivers/bluetooth/btqcomsmd.c2
-rw-r--r--drivers/bluetooth/btusb.c12
-rw-r--r--drivers/bluetooth/hci_bcsp.c16
-rw-r--r--drivers/bluetooth/hci_h4.c2
-rw-r--r--drivers/bluetooth/hci_h5.c12
-rw-r--r--drivers/bluetooth/hci_intel.c7
-rw-r--r--drivers/bluetooth/hci_ll.c2
-rw-r--r--drivers/bluetooth/hci_mrvl.c2
-rw-r--r--drivers/bluetooth/hci_qca.c2
-rw-r--r--drivers/char/pcmcia/synclink_cs.c2
-rw-r--r--drivers/firewire/net.c2
-rw-r--r--drivers/isdn/capi/capi.c2
-rw-r--r--drivers/isdn/capi/capidrv.c2
-rw-r--r--drivers/isdn/hardware/avm/b1.c6
-rw-r--r--drivers/isdn/hardware/avm/b1dma.c6
-rw-r--r--drivers/isdn/hardware/avm/c4.c6
-rw-r--r--drivers/isdn/hardware/avm/t1isa.c6
-rw-r--r--drivers/isdn/hardware/mISDN/hfcmulti.c5
-rw-r--r--drivers/isdn/hardware/mISDN/hfcsusb.c2
-rw-r--r--drivers/isdn/hisax/amd7930_fn.c3
-rw-r--r--drivers/isdn/hisax/avm_pci.c5
-rw-r--r--drivers/isdn/hisax/diva.c6
-rw-r--r--drivers/isdn/hisax/elsa_ser.c4
-rw-r--r--drivers/isdn/hisax/hfc_usb.c2
-rw-r--r--drivers/isdn/hisax/hisax_fcpcipnp.c3
-rw-r--r--drivers/isdn/hisax/hisax_isac.c4
-rw-r--r--drivers/isdn/hisax/hscx_irq.c6
-rw-r--r--drivers/isdn/hisax/icc.c2
-rw-r--r--drivers/isdn/hisax/ipacx.c8
-rw-r--r--drivers/isdn/hisax/isac.c2
-rw-r--r--drivers/isdn/hisax/isar.c6
-rw-r--r--drivers/isdn/hisax/isdnl2.c4
-rw-r--r--drivers/isdn/hisax/jade_irq.c6
-rw-r--r--drivers/isdn/hisax/l3_1tr6.c8
-rw-r--r--drivers/isdn/hisax/l3dss1.c28
-rw-r--r--drivers/isdn/hisax/l3ni1.c32
-rw-r--r--drivers/isdn/hisax/netjet.c2
-rw-r--r--drivers/isdn/hisax/st5481_usb.c2
-rw-r--r--drivers/isdn/hisax/w6692.c9
-rw-r--r--drivers/isdn/hysdn/hycapi.c31
-rw-r--r--drivers/isdn/hysdn/hysdn_net.c2
-rw-r--r--drivers/isdn/i4l/isdn_ppp.c3
-rw-r--r--drivers/isdn/i4l/isdn_tty.c2
-rw-r--r--drivers/isdn/i4l/isdn_v110.c6
-rw-r--r--drivers/isdn/isdnloop/isdnloop.c2
-rw-r--r--drivers/isdn/mISDN/dsp_cmx.c3
-rw-r--r--drivers/isdn/mISDN/layer2.c8
-rw-r--r--drivers/isdn/mISDN/tei.c2
-rw-r--r--drivers/media/dvb-core/dvb_net.c3
-rw-r--r--drivers/media/radio/wl128x/fmdrv_common.c2
-rw-r--r--drivers/misc/ti-st/st_core.c2
-rw-r--r--drivers/misc/ti-st/st_kim.c2
-rw-r--r--drivers/net/bonding/bond_alb.c3
-rw-r--r--drivers/net/caif/caif_hsi.c6
-rw-r--r--drivers/net/caif/caif_serial.c3
-rw-r--r--drivers/net/caif/caif_spi.c3
-rw-r--r--drivers/net/caif/caif_virtio.c2
-rw-r--r--drivers/net/can/slcan.c3
-rw-r--r--drivers/net/ethernet/3com/3c515.c6
-rw-r--r--drivers/net/ethernet/3com/3c59x.c5
-rw-r--r--drivers/net/ethernet/aeroflex/greth.c3
-rw-r--r--drivers/net/ethernet/agere/et131x.c2
-rw-r--r--drivers/net/ethernet/apple/macmace.c2
-rw-r--r--drivers/net/ethernet/aurora/nb8800.c4
-rw-r--r--drivers/net/ethernet/cadence/macb.c2
-rw-r--r--drivers/net/ethernet/cavium/liquidio/octeon_network.h4
-rw-r--r--drivers/net/ethernet/cirrus/cs89x0.c7
-rw-r--r--drivers/net/ethernet/dec/tulip/de4x5.c6
-rw-r--r--drivers/net/ethernet/dec/tulip/interrupt.c12
-rw-r--r--drivers/net/ethernet/dec/tulip/uli526x.c6
-rw-r--r--drivers/net/ethernet/ec_bhf.c2
-rw-r--r--drivers/net/ethernet/fealnx.c4
-rw-r--r--drivers/net/ethernet/i825xx/82596.c3
-rw-r--r--drivers/net/ethernet/i825xx/lib82596.c3
-rw-r--r--drivers/net/ethernet/intel/e1000/e1000_main.c2
-rw-r--r--drivers/net/ethernet/marvell/mvneta.c10
-rw-r--r--drivers/net/ethernet/micrel/ksz884x.c3
-rw-r--r--drivers/net/ethernet/nxp/lpc_eth.c7
-rw-r--r--drivers/net/ethernet/qlogic/qede/qede_fp.c3
-rw-r--r--drivers/net/ethernet/qlogic/qlge/qlge_main.c7
-rw-r--r--drivers/net/ethernet/silan/sc92031.c10
-rw-r--r--drivers/net/fjes/fjes_main.c3
-rw-r--r--drivers/net/hamradio/mkiss.c2
-rw-r--r--drivers/net/hippi/rrunner.c4
-rw-r--r--drivers/net/hyperv/netvsc_drv.c2
-rw-r--r--drivers/net/ieee802154/at86rf230.c2
-rw-r--r--drivers/net/ieee802154/ca8210.c2
-rw-r--r--drivers/net/ieee802154/mrf24j40.c2
-rw-r--r--drivers/net/irda/smsc-ircc2.c2
-rw-r--r--drivers/net/irda/vlsi_ir.c2
-rw-r--r--drivers/net/ppp/ppp_async.c3
-rw-r--r--drivers/net/ppp/ppp_synctty.c3
-rw-r--r--drivers/net/slip/slip.c2
-rw-r--r--drivers/net/usb/asix_common.c4
-rw-r--r--drivers/net/usb/cdc-phonet.c2
-rw-r--r--drivers/net/usb/cdc_mbim.c2
-rw-r--r--drivers/net/usb/cdc_ncm.c6
-rw-r--r--drivers/net/usb/gl620a.c3
-rw-r--r--drivers/net/usb/hso.c13
-rw-r--r--drivers/net/usb/ipheth.c2
-rw-r--r--drivers/net/usb/lg-vl600.c2
-rw-r--r--drivers/net/usb/qmi_wwan.c2
-rw-r--r--drivers/net/virtio_net.c2
-rw-r--r--drivers/net/wan/farsync.c2
-rw-r--r--drivers/net/wan/hdlc_ppp.c4
-rw-r--r--drivers/net/wan/x25_asy.c2
-rw-r--r--drivers/net/wimax/i2400m/netdev.c2
-rw-r--r--drivers/net/wireless/admtek/adm8211.c6
-rw-r--r--drivers/net/wireless/ath/ath10k/mac.c5
-rw-r--r--drivers/net/wireless/ath/ath10k/wmi.c5
-rw-r--r--drivers/net/wireless/ath/ath9k/channel.c5
-rw-r--r--drivers/net/wireless/ath/ath9k/wmi.c3
-rw-r--r--drivers/net/wireless/ath/carl9170/rx.c6
-rw-r--r--drivers/net/wireless/ath/wil6210/wmi.c2
-rw-r--r--drivers/net/wireless/atmel/atmel.c5
-rw-r--r--drivers/net/wireless/broadcom/b43legacy/dma.c2
-rw-r--r--drivers/net/wireless/intel/ipw2x00/ipw2200.c5
-rw-r--r--drivers/net/wireless/intel/ipw2x00/libipw_tx.c6
-rw-r--r--drivers/net/wireless/intel/iwlegacy/3945.c2
-rw-r--r--drivers/net/wireless/intel/iwlegacy/4965-mac.c2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/dvm/rx.c2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/dvm/tx.c3
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/d3.c4
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/rx.c2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c5
-rw-r--r--drivers/net/wireless/intel/iwlwifi/pcie/tx.c5
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_80211_tx.c2
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_ap.c2
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_hw.c11
-rw-r--r--drivers/net/wireless/intersil/hostap/hostap_main.c2
-rw-r--r--drivers/net/wireless/intersil/orinoco/main.c2
-rw-r--r--drivers/net/wireless/intersil/p54/p54spi.c4
-rw-r--r--drivers/net/wireless/intersil/p54/txrx.c5
-rw-r--r--drivers/net/wireless/mac80211_hwsim.c5
-rw-r--r--drivers/net/wireless/marvell/libertas/if_sdio.c4
-rw-r--r--drivers/net/wireless/marvell/mwifiex/11n_aggr.c2
-rw-r--r--drivers/net/wireless/marvell/mwifiex/cfg80211.c10
-rw-r--r--drivers/net/wireless/marvell/mwifiex/tdls.c8
-rw-r--r--drivers/net/wireless/mediatek/mt7601u/dma.c4
-rw-r--r--drivers/net/wireless/mediatek/mt7601u/mcu.c2
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c2
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/qlink_util.h3
-rw-r--r--drivers/net/wireless/ralink/rt2x00/rt2x00debug.c5
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/pci.c3
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8188ee/fw.c3
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8192se/fw.c7
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/usb.c2
-rw-r--r--drivers/net/wireless/rsi/rsi_91x_mgmt.c8
-rw-r--r--drivers/net/wireless/st/cw1200/scan.c2
-rw-r--r--drivers/net/wireless/ti/wl1251/main.c2
-rw-r--r--drivers/net/wireless/ti/wlcore/cmd.c4
-rw-r--r--drivers/net/wireless/ti/wlcore/rx.c4
-rw-r--r--drivers/net/wireless/zydas/zd1201.c26
-rw-r--r--drivers/net/wireless/zydas/zd1211rw/zd_mac.c2
-rw-r--r--drivers/nfc/fdp/fdp.c3
-rw-r--r--drivers/nfc/fdp/i2c.c2
-rw-r--r--drivers/nfc/nfcmrvl/fw_dnld.c7
-rw-r--r--drivers/nfc/nfcmrvl/i2c.c2
-rw-r--r--drivers/nfc/nfcmrvl/usb.c4
-rw-r--r--drivers/nfc/nxp-nci/firmware.c3
-rw-r--r--drivers/nfc/nxp-nci/i2c.c5
-rw-r--r--drivers/nfc/pn533/pn533.c28
-rw-r--r--drivers/nfc/pn533/usb.c4
-rw-r--r--drivers/nfc/port100.c14
-rw-r--r--drivers/nfc/s3fwrn5/firmware.c4
-rw-r--r--drivers/nfc/s3fwrn5/i2c.c2
-rw-r--r--drivers/nfc/st21nfca/dep.c2
-rw-r--r--drivers/nfc/st21nfca/i2c.c2
-rw-r--r--drivers/rpmsg/rpmsg_char.c2
-rw-r--r--drivers/s390/net/ctcm_fsms.c7
-rw-r--r--drivers/s390/net/ctcm_main.c10
-rw-r--r--drivers/s390/net/ctcm_mpc.c46
-rw-r--r--drivers/s390/net/lcs.c2
-rw-r--r--drivers/s390/net/netiucv.c10
-rw-r--r--drivers/s390/net/qeth_core_main.c10
-rw-r--r--drivers/staging/gdm724x/gdm_lte.c25
-rw-r--r--drivers/staging/ks7010/ks_hostif.c11
-rw-r--r--drivers/staging/most/aim-network/networking.c8
-rw-r--r--drivers/staging/octeon/ethernet-rx.c10
-rw-r--r--drivers/staging/rtl8188eu/core/rtw_recv.c4
-rw-r--r--drivers/staging/rtl8188eu/os_dep/mon.c2
-rw-r--r--drivers/staging/rtl8192e/rtllib_rx.c11
-rw-r--r--drivers/staging/rtl8192e/rtllib_softmac.c9
-rw-r--r--drivers/staging/rtl8192e/rtllib_tx.c12
-rw-r--r--drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c9
-rw-r--r--drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c3
-rw-r--r--drivers/staging/rtl8192u/ieee80211/ieee80211_tx.c7
-rw-r--r--drivers/staging/rtl8192u/r819xU_cmdpkt.c3
-rw-r--r--drivers/staging/rtl8712/rtl8712_recv.c3
-rw-r--r--drivers/staging/rtl8723bs/os_dep/recv_linux.c4
-rw-r--r--drivers/staging/wilc1000/linux_mon.c6
-rw-r--r--drivers/staging/wilc1000/linux_wlan.c2
-rw-r--r--drivers/staging/wlan-ng/hfa384x_usb.c6
-rw-r--r--drivers/tty/ipwireless/network.c2
-rw-r--r--drivers/tty/n_gsm.c2
-rw-r--r--drivers/tty/synclink.c2
-rw-r--r--drivers/tty/synclink_gt.c2
-rw-r--r--drivers/tty/synclinkmp.c2
-rw-r--r--drivers/usb/gadget/function/f_ncm.c11
-rw-r--r--drivers/usb/gadget/function/f_phonet.c2
-rw-r--r--include/linux/mISDNif.h2
-rw-r--r--include/linux/skbuff.h10
-rw-r--r--lib/nlattr.c2
-rw-r--r--net/batman-adv/bat_iv_ogm.c4
-rw-r--r--net/batman-adv/bat_v_ogm.c6
-rw-r--r--net/batman-adv/fragmentation.c3
-rw-r--r--net/bluetooth/cmtp/core.c2
-rw-r--r--net/bluetooth/hci_core.c2
-rw-r--r--net/bluetooth/hci_request.c2
-rw-r--r--net/bluetooth/hci_sock.c8
-rw-r--r--net/bluetooth/hidp/core.c2
-rw-r--r--net/bluetooth/l2cap_core.c4
-rw-r--r--net/bluetooth/mgmt_util.c4
-rw-r--r--net/bluetooth/rfcomm/tty.c2
-rw-r--r--net/bridge/netfilter/nft_reject_bridge.c6
-rw-r--r--net/can/bcm.c6
-rw-r--r--net/decnet/dn_nsp_out.c10
-rw-r--r--net/ieee802154/6lowpan/tx.c7
-rw-r--r--net/ipv6/mcast.c4
-rw-r--r--net/irda/ircomm/ircomm_tty.c2
-rw-r--r--net/irda/irlap_frame.c6
-rw-r--r--net/key/af_key.c3
-rw-r--r--net/mac80211/ibss.c2
-rw-r--r--net/mac80211/mesh.c8
-rw-r--r--net/mac80211/mlme.c16
-rw-r--r--net/mac80211/offchannel.c3
-rw-r--r--net/mac80211/rx.c2
-rw-r--r--net/mac80211/tdls.c32
-rw-r--r--net/mac80211/tx.c22
-rw-r--r--net/mac80211/util.c5
-rw-r--r--net/netlink/af_netlink.c2
-rw-r--r--net/nfc/digital_dep.c17
-rw-r--r--net/nfc/hci/core.c6
-rw-r--r--net/nfc/llcp_commands.c15
-rw-r--r--net/nfc/llcp_core.c2
-rw-r--r--net/nfc/nci/core.c4
-rw-r--r--net/nfc/nci/data.c2
-rw-r--r--net/nfc/nci/hci.c7
-rw-r--r--net/nfc/nci/uart.c2
-rw-r--r--net/qrtr/qrtr.c2
-rw-r--r--net/sctp/output.c3
-rw-r--r--net/sctp/sm_make_chunk.c4
-rw-r--r--net/vmw_vsock/virtio_transport_common.c6
-rw-r--r--net/x25/x25_subr.c21
252 files changed, 622 insertions, 741 deletions
diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c
index 637c3e6b0f9e..7584ae1ded85 100644
--- a/drivers/atm/fore200e.c
+++ b/drivers/atm/fore200e.c
@@ -1104,7 +1104,7 @@ fore200e_push_rpd(struct fore200e* fore200e, struct atm_vcc* vcc, struct rpd* rp
1104 /* Make device DMA transfer visible to CPU. */ 1104 /* Make device DMA transfer visible to CPU. */
1105 fore200e->bus->dma_sync_for_cpu(fore200e, buffer->data.dma_addr, rpd->rsd[ i ].length, DMA_FROM_DEVICE); 1105 fore200e->bus->dma_sync_for_cpu(fore200e, buffer->data.dma_addr, rpd->rsd[ i ].length, DMA_FROM_DEVICE);
1106 1106
1107 memcpy(skb_put(skb, rpd->rsd[ i ].length), buffer->data.align_addr, rpd->rsd[ i ].length); 1107 skb_put_data(skb, buffer->data.align_addr, rpd->rsd[i].length);
1108 1108
1109 /* Now let the device get at it again. */ 1109 /* Now let the device get at it again. */
1110 fore200e->bus->dma_sync_for_device(fore200e, buffer->data.dma_addr, rpd->rsd[ i ].length, DMA_FROM_DEVICE); 1110 fore200e->bus->dma_sync_for_device(fore200e, buffer->data.dma_addr, rpd->rsd[ i ].length, DMA_FROM_DEVICE);
diff --git a/drivers/atm/he.c b/drivers/atm/he.c
index 3617659b9184..461da2bce8ef 100644
--- a/drivers/atm/he.c
+++ b/drivers/atm/he.c
@@ -1735,7 +1735,7 @@ he_service_rbrq(struct he_dev *he_dev, int group)
1735 __net_timestamp(skb); 1735 __net_timestamp(skb);
1736 1736
1737 list_for_each_entry(heb, &he_vcc->buffers, entry) 1737 list_for_each_entry(heb, &he_vcc->buffers, entry)
1738 memcpy(skb_put(skb, heb->len), &heb->data, heb->len); 1738 skb_put_data(skb, &heb->data, heb->len);
1739 1739
1740 switch (vcc->qos.aal) { 1740 switch (vcc->qos.aal) {
1741 case ATM_AAL0: 1741 case ATM_AAL0:
diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
index 5ec109533bb9..4e64de380bda 100644
--- a/drivers/atm/idt77252.c
+++ b/drivers/atm/idt77252.c
@@ -1090,8 +1090,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
1090 1090
1091 *((u32 *) sb->data) = aal0; 1091 *((u32 *) sb->data) = aal0;
1092 skb_put(sb, sizeof(u32)); 1092 skb_put(sb, sizeof(u32));
1093 memcpy(skb_put(sb, ATM_CELL_PAYLOAD), 1093 skb_put_data(sb, cell, ATM_CELL_PAYLOAD);
1094 cell, ATM_CELL_PAYLOAD);
1095 1094
1096 ATM_SKB(sb)->vcc = vcc; 1095 ATM_SKB(sb)->vcc = vcc;
1097 __net_timestamp(sb); 1096 __net_timestamp(sb);
@@ -1159,8 +1158,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
1159 return; 1158 return;
1160 } 1159 }
1161 skb_queue_walk(&rpp->queue, sb) 1160 skb_queue_walk(&rpp->queue, sb)
1162 memcpy(skb_put(skb, sb->len), 1161 skb_put_data(skb, sb->data, sb->len);
1163 sb->data, sb->len);
1164 1162
1165 recycle_rx_pool_skb(card, rpp); 1163 recycle_rx_pool_skb(card, rpp);
1166 1164
@@ -1322,8 +1320,7 @@ idt77252_rx_raw(struct idt77252_dev *card)
1322 1320
1323 *((u32 *) sb->data) = header; 1321 *((u32 *) sb->data) = header;
1324 skb_put(sb, sizeof(u32)); 1322 skb_put(sb, sizeof(u32));
1325 memcpy(skb_put(sb, ATM_CELL_PAYLOAD), &(queue->data[16]), 1323 skb_put_data(sb, &(queue->data[16]), ATM_CELL_PAYLOAD);
1326 ATM_CELL_PAYLOAD);
1327 1324
1328 ATM_SKB(sb)->vcc = vcc; 1325 ATM_SKB(sb)->vcc = vcc;
1329 __net_timestamp(sb); 1326 __net_timestamp(sb);
@@ -2014,7 +2011,7 @@ idt77252_send_oam(struct atm_vcc *vcc, void *cell, int flags)
2014 } 2011 }
2015 atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc); 2012 atomic_add(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc);
2016 2013
2017 memcpy(skb_put(skb, 52), cell, 52); 2014 skb_put_data(skb, cell, 52);
2018 2015
2019 return idt77252_send_skb(vcc, skb, 1); 2016 return idt77252_send_skb(vcc, skb, 1);
2020} 2017}
diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
index 9115b292e680..077dd15c3a40 100644
--- a/drivers/atm/solos-pci.c
+++ b/drivers/atm/solos-pci.c
@@ -493,7 +493,7 @@ static int send_command(struct solos_card *card, int dev, const char *buf, size_
493 header->vci = cpu_to_le16(0); 493 header->vci = cpu_to_le16(0);
494 header->type = cpu_to_le16(PKT_COMMAND); 494 header->type = cpu_to_le16(PKT_COMMAND);
495 495
496 memcpy(skb_put(skb, size), buf, size); 496 skb_put_data(skb, buf, size);
497 497
498 fpga_queue(card, dev, skb, NULL); 498 fpga_queue(card, dev, skb, NULL);
499 499
diff --git a/drivers/bluetooth/bfusb.c b/drivers/bluetooth/bfusb.c
index 3bf4ec60e073..ab090a313a5f 100644
--- a/drivers/bluetooth/bfusb.c
+++ b/drivers/bluetooth/bfusb.c
@@ -335,7 +335,7 @@ static inline int bfusb_recv_block(struct bfusb_data *data, int hdr, unsigned ch
335 } 335 }
336 336
337 if (len > 0) 337 if (len > 0)
338 memcpy(skb_put(data->reassembly, len), buf, len); 338 skb_put_data(data->reassembly, buf, len);
339 339
340 if (hdr & 0x08) { 340 if (hdr & 0x08) {
341 hci_recv_frame(data->hdev, data->reassembly); 341 hci_recv_frame(data->hdev, data->reassembly);
@@ -505,7 +505,7 @@ static int bfusb_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
505 buf[1] = 0x00; 505 buf[1] = 0x00;
506 buf[2] = (size == BFUSB_MAX_BLOCK_SIZE) ? 0 : size; 506 buf[2] = (size == BFUSB_MAX_BLOCK_SIZE) ? 0 : size;
507 507
508 memcpy(skb_put(nskb, 3), buf, 3); 508 skb_put_data(nskb, buf, 3);
509 skb_copy_from_linear_data_offset(skb, sent, skb_put(nskb, size), size); 509 skb_copy_from_linear_data_offset(skb, sent, skb_put(nskb, size), size);
510 510
511 sent += size; 511 sent += size;
@@ -516,7 +516,7 @@ static int bfusb_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
516 if ((nskb->len % data->bulk_pkt_size) == 0) { 516 if ((nskb->len % data->bulk_pkt_size) == 0) {
517 buf[0] = 0xdd; 517 buf[0] = 0xdd;
518 buf[1] = 0x00; 518 buf[1] = 0x00;
519 memcpy(skb_put(nskb, 2), buf, 2); 519 skb_put_data(nskb, buf, 2);
520 } 520 }
521 521
522 read_lock(&data->lock); 522 read_lock(&data->lock);
diff --git a/drivers/bluetooth/bluecard_cs.c b/drivers/bluetooth/bluecard_cs.c
index 007c0a45f31b..1d30c116b2ee 100644
--- a/drivers/bluetooth/bluecard_cs.c
+++ b/drivers/bluetooth/bluecard_cs.c
@@ -597,7 +597,7 @@ static int bluecard_hci_set_baud_rate(struct hci_dev *hdev, int baud)
597 break; 597 break;
598 } 598 }
599 599
600 memcpy(skb_put(skb, sizeof(cmd)), cmd, sizeof(cmd)); 600 skb_put_data(skb, cmd, sizeof(cmd));
601 601
602 skb_queue_tail(&(info->txq), skb); 602 skb_queue_tail(&(info->txq), skb);
603 603
diff --git a/drivers/bluetooth/btmrvl_main.c b/drivers/bluetooth/btmrvl_main.c
index c38cb5b91291..24a188eab360 100644
--- a/drivers/bluetooth/btmrvl_main.c
+++ b/drivers/bluetooth/btmrvl_main.c
@@ -194,7 +194,7 @@ static int btmrvl_send_sync_cmd(struct btmrvl_private *priv, u16 opcode,
194 hdr->plen = len; 194 hdr->plen = len;
195 195
196 if (len) 196 if (len)
197 memcpy(skb_put(skb, len), param, len); 197 skb_put_data(skb, param, len);
198 198
199 hci_skb_pkt_type(skb) = MRVL_VENDOR_PKT; 199 hci_skb_pkt_type(skb) = MRVL_VENDOR_PKT;
200 200
diff --git a/drivers/bluetooth/btqcomsmd.c b/drivers/bluetooth/btqcomsmd.c
index ef730c173d4b..d00c4fdae924 100644
--- a/drivers/bluetooth/btqcomsmd.c
+++ b/drivers/bluetooth/btqcomsmd.c
@@ -43,7 +43,7 @@ static int btqcomsmd_recv(struct hci_dev *hdev, unsigned int type,
43 } 43 }
44 44
45 hci_skb_pkt_type(skb) = type; 45 hci_skb_pkt_type(skb) = type;
46 memcpy(skb_put(skb, count), data, count); 46 skb_put_data(skb, data, count);
47 47
48 return hci_recv_frame(hdev, skb); 48 return hci_recv_frame(hdev, skb);
49} 49}
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index bfd5f4bdec80..c7ea398e65c1 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -478,7 +478,7 @@ static int btusb_recv_intr(struct btusb_data *data, void *buffer, int count)
478 } 478 }
479 479
480 len = min_t(uint, hci_skb_expect(skb), count); 480 len = min_t(uint, hci_skb_expect(skb), count);
481 memcpy(skb_put(skb, len), buffer, len); 481 skb_put_data(skb, buffer, len);
482 482
483 count -= len; 483 count -= len;
484 buffer += len; 484 buffer += len;
@@ -533,7 +533,7 @@ static int btusb_recv_bulk(struct btusb_data *data, void *buffer, int count)
533 } 533 }
534 534
535 len = min_t(uint, hci_skb_expect(skb), count); 535 len = min_t(uint, hci_skb_expect(skb), count);
536 memcpy(skb_put(skb, len), buffer, len); 536 skb_put_data(skb, buffer, len);
537 537
538 count -= len; 538 count -= len;
539 buffer += len; 539 buffer += len;
@@ -590,7 +590,7 @@ static int btusb_recv_isoc(struct btusb_data *data, void *buffer, int count)
590 } 590 }
591 591
592 len = min_t(uint, hci_skb_expect(skb), count); 592 len = min_t(uint, hci_skb_expect(skb), count);
593 memcpy(skb_put(skb, len), buffer, len); 593 skb_put_data(skb, buffer, len);
594 594
595 count -= len; 595 count -= len;
596 buffer += len; 596 buffer += len;
@@ -934,8 +934,8 @@ static void btusb_diag_complete(struct urb *urb)
934 934
935 skb = bt_skb_alloc(urb->actual_length, GFP_ATOMIC); 935 skb = bt_skb_alloc(urb->actual_length, GFP_ATOMIC);
936 if (skb) { 936 if (skb) {
937 memcpy(skb_put(skb, urb->actual_length), 937 skb_put_data(skb, urb->transfer_buffer,
938 urb->transfer_buffer, urb->actual_length); 938 urb->actual_length);
939 hci_recv_diag(hdev, skb); 939 hci_recv_diag(hdev, skb);
940 } 940 }
941 } else if (urb->status == -ENOENT) { 941 } else if (urb->status == -ENOENT) {
@@ -2395,7 +2395,7 @@ static int marvell_config_oob_wake(struct hci_dev *hdev)
2395 return -ENOMEM; 2395 return -ENOMEM;
2396 } 2396 }
2397 2397
2398 memcpy(skb_put(skb, sizeof(cmd)), cmd, sizeof(cmd)); 2398 skb_put_data(skb, cmd, sizeof(cmd));
2399 hci_skb_pkt_type(skb) = HCI_COMMAND_PKT; 2399 hci_skb_pkt_type(skb) = HCI_COMMAND_PKT;
2400 2400
2401 ret = btusb_send_frame(hdev, skb); 2401 ret = btusb_send_frame(hdev, skb);
diff --git a/drivers/bluetooth/hci_bcsp.c b/drivers/bluetooth/hci_bcsp.c
index 910ec968f022..d880f4e33c75 100644
--- a/drivers/bluetooth/hci_bcsp.c
+++ b/drivers/bluetooth/hci_bcsp.c
@@ -125,7 +125,7 @@ static void bcsp_slip_msgdelim(struct sk_buff *skb)
125{ 125{
126 const char pkt_delim = 0xc0; 126 const char pkt_delim = 0xc0;
127 127
128 memcpy(skb_put(skb, 1), &pkt_delim, 1); 128 skb_put_data(skb, &pkt_delim, 1);
129} 129}
130 130
131static void bcsp_slip_one_byte(struct sk_buff *skb, u8 c) 131static void bcsp_slip_one_byte(struct sk_buff *skb, u8 c)
@@ -135,13 +135,13 @@ static void bcsp_slip_one_byte(struct sk_buff *skb, u8 c)
135 135
136 switch (c) { 136 switch (c) {
137 case 0xc0: 137 case 0xc0:
138 memcpy(skb_put(skb, 2), &esc_c0, 2); 138 skb_put_data(skb, &esc_c0, 2);
139 break; 139 break;
140 case 0xdb: 140 case 0xdb:
141 memcpy(skb_put(skb, 2), &esc_db, 2); 141 skb_put_data(skb, &esc_db, 2);
142 break; 142 break;
143 default: 143 default:
144 memcpy(skb_put(skb, 1), &c, 1); 144 skb_put_data(skb, &c, 1);
145 } 145 }
146} 146}
147 147
@@ -423,7 +423,7 @@ static void bcsp_handle_le_pkt(struct hci_uart *hu)
423 BT_DBG("Found a LE conf pkt"); 423 BT_DBG("Found a LE conf pkt");
424 if (!nskb) 424 if (!nskb)
425 return; 425 return;
426 memcpy(skb_put(nskb, 4), conf_rsp_pkt, 4); 426 skb_put_data(nskb, conf_rsp_pkt, 4);
427 hci_skb_pkt_type(nskb) = BCSP_LE_PKT; 427 hci_skb_pkt_type(nskb) = BCSP_LE_PKT;
428 428
429 skb_queue_head(&bcsp->unrel, nskb); 429 skb_queue_head(&bcsp->unrel, nskb);
@@ -447,7 +447,7 @@ static inline void bcsp_unslip_one_byte(struct bcsp_struct *bcsp, unsigned char
447 bcsp->rx_esc_state = BCSP_ESCSTATE_ESC; 447 bcsp->rx_esc_state = BCSP_ESCSTATE_ESC;
448 break; 448 break;
449 default: 449 default:
450 memcpy(skb_put(bcsp->rx_skb, 1), &byte, 1); 450 skb_put_data(bcsp->rx_skb, &byte, 1);
451 if ((bcsp->rx_skb->data[0] & 0x40) != 0 && 451 if ((bcsp->rx_skb->data[0] & 0x40) != 0 &&
452 bcsp->rx_state != BCSP_W4_CRC) 452 bcsp->rx_state != BCSP_W4_CRC)
453 bcsp_crc_update(&bcsp->message_crc, byte); 453 bcsp_crc_update(&bcsp->message_crc, byte);
@@ -458,7 +458,7 @@ static inline void bcsp_unslip_one_byte(struct bcsp_struct *bcsp, unsigned char
458 case BCSP_ESCSTATE_ESC: 458 case BCSP_ESCSTATE_ESC:
459 switch (byte) { 459 switch (byte) {
460 case 0xdc: 460 case 0xdc:
461 memcpy(skb_put(bcsp->rx_skb, 1), &c0, 1); 461 skb_put_data(bcsp->rx_skb, &c0, 1);
462 if ((bcsp->rx_skb->data[0] & 0x40) != 0 && 462 if ((bcsp->rx_skb->data[0] & 0x40) != 0 &&
463 bcsp->rx_state != BCSP_W4_CRC) 463 bcsp->rx_state != BCSP_W4_CRC)
464 bcsp_crc_update(&bcsp->message_crc, 0xc0); 464 bcsp_crc_update(&bcsp->message_crc, 0xc0);
@@ -467,7 +467,7 @@ static inline void bcsp_unslip_one_byte(struct bcsp_struct *bcsp, unsigned char
467 break; 467 break;
468 468
469 case 0xdd: 469 case 0xdd:
470 memcpy(skb_put(bcsp->rx_skb, 1), &db, 1); 470 skb_put_data(bcsp->rx_skb, &db, 1);
471 if ((bcsp->rx_skb->data[0] & 0x40) != 0 && 471 if ((bcsp->rx_skb->data[0] & 0x40) != 0 &&
472 bcsp->rx_state != BCSP_W4_CRC) 472 bcsp->rx_state != BCSP_W4_CRC)
473 bcsp_crc_update(&bcsp->message_crc, 0xdb); 473 bcsp_crc_update(&bcsp->message_crc, 0xdb);
diff --git a/drivers/bluetooth/hci_h4.c b/drivers/bluetooth/hci_h4.c
index 82e5a32b87a4..4e328d7d47bb 100644
--- a/drivers/bluetooth/hci_h4.c
+++ b/drivers/bluetooth/hci_h4.c
@@ -209,7 +209,7 @@ struct sk_buff *h4_recv_buf(struct hci_dev *hdev, struct sk_buff *skb,
209 } 209 }
210 210
211 len = min_t(uint, hci_skb_expect(skb) - skb->len, count); 211 len = min_t(uint, hci_skb_expect(skb) - skb->len, count);
212 memcpy(skb_put(skb, len), buffer, len); 212 skb_put_data(skb, buffer, len);
213 213
214 count -= len; 214 count -= len;
215 buffer += len; 215 buffer += len;
diff --git a/drivers/bluetooth/hci_h5.c b/drivers/bluetooth/hci_h5.c
index 90d0456b6744..c0e4e26dc30d 100644
--- a/drivers/bluetooth/hci_h5.c
+++ b/drivers/bluetooth/hci_h5.c
@@ -109,7 +109,7 @@ static void h5_link_control(struct hci_uart *hu, const void *data, size_t len)
109 109
110 hci_skb_pkt_type(nskb) = HCI_3WIRE_LINK_PKT; 110 hci_skb_pkt_type(nskb) = HCI_3WIRE_LINK_PKT;
111 111
112 memcpy(skb_put(nskb, len), data, len); 112 skb_put_data(nskb, data, len);
113 113
114 skb_queue_tail(&h5->unrel, nskb); 114 skb_queue_tail(&h5->unrel, nskb);
115} 115}
@@ -487,7 +487,7 @@ static void h5_unslip_one_byte(struct h5 *h5, unsigned char c)
487 } 487 }
488 } 488 }
489 489
490 memcpy(skb_put(h5->rx_skb, 1), byte, 1); 490 skb_put_data(h5->rx_skb, byte, 1);
491 h5->rx_pending--; 491 h5->rx_pending--;
492 492
493 BT_DBG("unsliped 0x%02hhx, rx_pending %zu", *byte, h5->rx_pending); 493 BT_DBG("unsliped 0x%02hhx, rx_pending %zu", *byte, h5->rx_pending);
@@ -579,7 +579,7 @@ static void h5_slip_delim(struct sk_buff *skb)
579{ 579{
580 const char delim = SLIP_DELIMITER; 580 const char delim = SLIP_DELIMITER;
581 581
582 memcpy(skb_put(skb, 1), &delim, 1); 582 skb_put_data(skb, &delim, 1);
583} 583}
584 584
585static void h5_slip_one_byte(struct sk_buff *skb, u8 c) 585static void h5_slip_one_byte(struct sk_buff *skb, u8 c)
@@ -589,13 +589,13 @@ static void h5_slip_one_byte(struct sk_buff *skb, u8 c)
589 589
590 switch (c) { 590 switch (c) {
591 case SLIP_DELIMITER: 591 case SLIP_DELIMITER:
592 memcpy(skb_put(skb, 2), &esc_delim, 2); 592 skb_put_data(skb, &esc_delim, 2);
593 break; 593 break;
594 case SLIP_ESC: 594 case SLIP_ESC:
595 memcpy(skb_put(skb, 2), &esc_esc, 2); 595 skb_put_data(skb, &esc_esc, 2);
596 break; 596 break;
597 default: 597 default:
598 memcpy(skb_put(skb, 1), &c, 1); 598 skb_put_data(skb, &c, 1);
599 } 599 }
600} 600}
601 601
diff --git a/drivers/bluetooth/hci_intel.c b/drivers/bluetooth/hci_intel.c
index 851bee82df2a..16e728577cd8 100644
--- a/drivers/bluetooth/hci_intel.c
+++ b/drivers/bluetooth/hci_intel.c
@@ -185,7 +185,7 @@ static int intel_lpm_suspend(struct hci_uart *hu)
185 return -ENOMEM; 185 return -ENOMEM;
186 } 186 }
187 187
188 memcpy(skb_put(skb, sizeof(suspend)), suspend, sizeof(suspend)); 188 skb_put_data(skb, suspend, sizeof(suspend));
189 hci_skb_pkt_type(skb) = HCI_LPM_PKT; 189 hci_skb_pkt_type(skb) = HCI_LPM_PKT;
190 190
191 set_bit(STATE_LPM_TRANSACTION, &intel->flags); 191 set_bit(STATE_LPM_TRANSACTION, &intel->flags);
@@ -270,8 +270,7 @@ static int intel_lpm_host_wake(struct hci_uart *hu)
270 return -ENOMEM; 270 return -ENOMEM;
271 } 271 }
272 272
273 memcpy(skb_put(skb, sizeof(lpm_resume_ack)), lpm_resume_ack, 273 skb_put_data(skb, lpm_resume_ack, sizeof(lpm_resume_ack));
274 sizeof(lpm_resume_ack));
275 hci_skb_pkt_type(skb) = HCI_LPM_PKT; 274 hci_skb_pkt_type(skb) = HCI_LPM_PKT;
276 275
277 /* LPM flow is a priority, enqueue packet at list head */ 276 /* LPM flow is a priority, enqueue packet at list head */
@@ -522,7 +521,7 @@ static int intel_set_baudrate(struct hci_uart *hu, unsigned int speed)
522 return -ENOMEM; 521 return -ENOMEM;
523 } 522 }
524 523
525 memcpy(skb_put(skb, sizeof(speed_cmd)), speed_cmd, sizeof(speed_cmd)); 524 skb_put_data(skb, speed_cmd, sizeof(speed_cmd));
526 hci_skb_pkt_type(skb) = HCI_COMMAND_PKT; 525 hci_skb_pkt_type(skb) = HCI_COMMAND_PKT;
527 526
528 hci_uart_set_flow_control(hu, true); 527 hci_uart_set_flow_control(hu, true);
diff --git a/drivers/bluetooth/hci_ll.c b/drivers/bluetooth/hci_ll.c
index 2b16d48d82ee..cc2fa78b434e 100644
--- a/drivers/bluetooth/hci_ll.c
+++ b/drivers/bluetooth/hci_ll.c
@@ -413,7 +413,7 @@ static int ll_recv(struct hci_uart *hu, const void *data, int count)
413 while (count) { 413 while (count) {
414 if (ll->rx_count) { 414 if (ll->rx_count) {
415 len = min_t(unsigned int, ll->rx_count, count); 415 len = min_t(unsigned int, ll->rx_count, count);
416 memcpy(skb_put(ll->rx_skb, len), ptr, len); 416 skb_put_data(ll->rx_skb, ptr, len);
417 ll->rx_count -= len; count -= len; ptr += len; 417 ll->rx_count -= len; count -= len; ptr += len;
418 418
419 if (ll->rx_count) 419 if (ll->rx_count)
diff --git a/drivers/bluetooth/hci_mrvl.c b/drivers/bluetooth/hci_mrvl.c
index bbc4b39b1dbf..ffb00669346f 100644
--- a/drivers/bluetooth/hci_mrvl.c
+++ b/drivers/bluetooth/hci_mrvl.c
@@ -328,7 +328,7 @@ static int mrvl_load_firmware(struct hci_dev *hdev, const char *name)
328 } 328 }
329 bt_cb(skb)->pkt_type = MRVL_RAW_DATA; 329 bt_cb(skb)->pkt_type = MRVL_RAW_DATA;
330 330
331 memcpy(skb_put(skb, mrvl->tx_len), fw_ptr, mrvl->tx_len); 331 skb_put_data(skb, fw_ptr, mrvl->tx_len);
332 fw_ptr += mrvl->tx_len; 332 fw_ptr += mrvl->tx_len;
333 333
334 set_bit(STATE_FW_REQ_PENDING, &mrvl->flags); 334 set_bit(STATE_FW_REQ_PENDING, &mrvl->flags);
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
index f242dfd0c2e2..b55f01320631 100644
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
@@ -869,7 +869,7 @@ static int qca_set_baudrate(struct hci_dev *hdev, uint8_t baudrate)
869 } 869 }
870 870
871 /* Assign commands to change baudrate and packet type. */ 871 /* Assign commands to change baudrate and packet type. */
872 memcpy(skb_put(skb, sizeof(cmd)), cmd, sizeof(cmd)); 872 skb_put_data(skb, cmd, sizeof(cmd));
873 hci_skb_pkt_type(skb) = HCI_COMMAND_PKT; 873 hci_skb_pkt_type(skb) = HCI_COMMAND_PKT;
874 874
875 skb_queue_tail(&qca->txq, skb); 875 skb_queue_tail(&qca->txq, skb);
diff --git a/drivers/char/pcmcia/synclink_cs.c b/drivers/char/pcmcia/synclink_cs.c
index d136db1a10f0..62be953e5fb0 100644
--- a/drivers/char/pcmcia/synclink_cs.c
+++ b/drivers/char/pcmcia/synclink_cs.c
@@ -4235,7 +4235,7 @@ static void hdlcdev_rx(MGSLPC_INFO *info, char *buf, int size)
4235 return; 4235 return;
4236 } 4236 }
4237 4237
4238 memcpy(skb_put(skb, size), buf, size); 4238 skb_put_data(skb, buf, size);
4239 4239
4240 skb->protocol = hdlc_type_trans(skb, dev); 4240 skb->protocol = hdlc_type_trans(skb, dev);
4241 4241
diff --git a/drivers/firewire/net.c b/drivers/firewire/net.c
index 5d3640264f2d..d5040bbd34e8 100644
--- a/drivers/firewire/net.c
+++ b/drivers/firewire/net.c
@@ -600,7 +600,7 @@ static int fwnet_incoming_packet(struct fwnet_device *dev, __be32 *buf, int len,
600 return -ENOMEM; 600 return -ENOMEM;
601 } 601 }
602 skb_reserve(skb, LL_RESERVED_SPACE(net)); 602 skb_reserve(skb, LL_RESERVED_SPACE(net));
603 memcpy(skb_put(skb, len), buf, len); 603 skb_put_data(skb, buf, len);
604 604
605 return fwnet_finish_incoming_packet(net, skb, source_node_id, 605 return fwnet_finish_incoming_packet(net, skb, source_node_id,
606 is_broadcast, ether_type); 606 is_broadcast, ether_type);
diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c
index 6a2df3297e77..77be17590866 100644
--- a/drivers/isdn/capi/capi.c
+++ b/drivers/isdn/capi/capi.c
@@ -1058,7 +1058,7 @@ static int capinc_tty_write(struct tty_struct *tty,
1058 } 1058 }
1059 1059
1060 skb_reserve(skb, CAPI_DATA_B3_REQ_LEN); 1060 skb_reserve(skb, CAPI_DATA_B3_REQ_LEN);
1061 memcpy(skb_put(skb, count), buf, count); 1061 skb_put_data(skb, buf, count);
1062 1062
1063 __skb_queue_tail(&mp->outqueue, skb); 1063 __skb_queue_tail(&mp->outqueue, skb);
1064 mp->outbytes += skb->len; 1064 mp->outbytes += skb->len;
diff --git a/drivers/isdn/capi/capidrv.c b/drivers/isdn/capi/capidrv.c
index 85cfa4f8691f..89dd1303a98a 100644
--- a/drivers/isdn/capi/capidrv.c
+++ b/drivers/isdn/capi/capidrv.c
@@ -516,7 +516,7 @@ static void send_message(capidrv_contr *card, _cmsg *cmsg)
516 printk(KERN_ERR "capidrv::send_message: can't allocate mem\n"); 516 printk(KERN_ERR "capidrv::send_message: can't allocate mem\n");
517 return; 517 return;
518 } 518 }
519 memcpy(skb_put(skb, len), cmsg->buf, len); 519 skb_put_data(skb, cmsg->buf, len);
520 if (capi20_put_message(&global.ap, skb) != CAPI_NOERROR) 520 if (capi20_put_message(&global.ap, skb) != CAPI_NOERROR)
521 kfree_skb(skb); 521 kfree_skb(skb);
522} 522}
diff --git a/drivers/isdn/hardware/avm/b1.c b/drivers/isdn/hardware/avm/b1.c
index 9fdbd99c7547..b1833d08a5fe 100644
--- a/drivers/isdn/hardware/avm/b1.c
+++ b/drivers/isdn/hardware/avm/b1.c
@@ -529,8 +529,8 @@ irqreturn_t b1_interrupt(int interrupt, void *devptr)
529 printk(KERN_ERR "%s: incoming packet dropped\n", 529 printk(KERN_ERR "%s: incoming packet dropped\n",
530 card->name); 530 card->name);
531 } else { 531 } else {
532 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 532 skb_put_data(skb, card->msgbuf, MsgLen);
533 memcpy(skb_put(skb, DataB3Len), card->databuf, DataB3Len); 533 skb_put_data(skb, card->databuf, DataB3Len);
534 capi_ctr_handle_message(ctrl, ApplId, skb); 534 capi_ctr_handle_message(ctrl, ApplId, skb);
535 } 535 }
536 break; 536 break;
@@ -544,7 +544,7 @@ irqreturn_t b1_interrupt(int interrupt, void *devptr)
544 card->name); 544 card->name);
545 spin_unlock_irqrestore(&card->lock, flags); 545 spin_unlock_irqrestore(&card->lock, flags);
546 } else { 546 } else {
547 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 547 skb_put_data(skb, card->msgbuf, MsgLen);
548 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_CONF) 548 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_CONF)
549 capilib_data_b3_conf(&cinfo->ncci_head, ApplId, 549 capilib_data_b3_conf(&cinfo->ncci_head, ApplId,
550 CAPIMSG_NCCI(skb->data), 550 CAPIMSG_NCCI(skb->data),
diff --git a/drivers/isdn/hardware/avm/b1dma.c b/drivers/isdn/hardware/avm/b1dma.c
index 818bd8f231db..9538a9e5e1a8 100644
--- a/drivers/isdn/hardware/avm/b1dma.c
+++ b/drivers/isdn/hardware/avm/b1dma.c
@@ -474,8 +474,8 @@ static void b1dma_handle_rx(avmcard *card)
474 printk(KERN_ERR "%s: incoming packet dropped\n", 474 printk(KERN_ERR "%s: incoming packet dropped\n",
475 card->name); 475 card->name);
476 } else { 476 } else {
477 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 477 skb_put_data(skb, card->msgbuf, MsgLen);
478 memcpy(skb_put(skb, DataB3Len), card->databuf, DataB3Len); 478 skb_put_data(skb, card->databuf, DataB3Len);
479 capi_ctr_handle_message(ctrl, ApplId, skb); 479 capi_ctr_handle_message(ctrl, ApplId, skb);
480 } 480 }
481 break; 481 break;
@@ -488,7 +488,7 @@ static void b1dma_handle_rx(avmcard *card)
488 printk(KERN_ERR "%s: incoming packet dropped\n", 488 printk(KERN_ERR "%s: incoming packet dropped\n",
489 card->name); 489 card->name);
490 } else { 490 } else {
491 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 491 skb_put_data(skb, card->msgbuf, MsgLen);
492 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_CONF) { 492 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_CONF) {
493 spin_lock(&card->lock); 493 spin_lock(&card->lock);
494 capilib_data_b3_conf(&cinfo->ncci_head, ApplId, 494 capilib_data_b3_conf(&cinfo->ncci_head, ApplId,
diff --git a/drivers/isdn/hardware/avm/c4.c b/drivers/isdn/hardware/avm/c4.c
index 17beb2869dc1..40c7e2cf423b 100644
--- a/drivers/isdn/hardware/avm/c4.c
+++ b/drivers/isdn/hardware/avm/c4.c
@@ -536,8 +536,8 @@ static void c4_handle_rx(avmcard *card)
536 printk(KERN_ERR "%s: incoming packet dropped\n", 536 printk(KERN_ERR "%s: incoming packet dropped\n",
537 card->name); 537 card->name);
538 } else { 538 } else {
539 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 539 skb_put_data(skb, card->msgbuf, MsgLen);
540 memcpy(skb_put(skb, DataB3Len), card->databuf, DataB3Len); 540 skb_put_data(skb, card->databuf, DataB3Len);
541 capi_ctr_handle_message(ctrl, ApplId, skb); 541 capi_ctr_handle_message(ctrl, ApplId, skb);
542 } 542 }
543 break; 543 break;
@@ -555,7 +555,7 @@ static void c4_handle_rx(avmcard *card)
555 printk(KERN_ERR "%s: incoming packet dropped\n", 555 printk(KERN_ERR "%s: incoming packet dropped\n",
556 card->name); 556 card->name);
557 } else { 557 } else {
558 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 558 skb_put_data(skb, card->msgbuf, MsgLen);
559 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_CONF) 559 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_CONF)
560 capilib_data_b3_conf(&cinfo->ncci_head, ApplId, 560 capilib_data_b3_conf(&cinfo->ncci_head, ApplId,
561 CAPIMSG_NCCI(skb->data), 561 CAPIMSG_NCCI(skb->data),
diff --git a/drivers/isdn/hardware/avm/t1isa.c b/drivers/isdn/hardware/avm/t1isa.c
index 9516203c735f..9f80d20ced87 100644
--- a/drivers/isdn/hardware/avm/t1isa.c
+++ b/drivers/isdn/hardware/avm/t1isa.c
@@ -171,8 +171,8 @@ static irqreturn_t t1isa_interrupt(int interrupt, void *devptr)
171 printk(KERN_ERR "%s: incoming packet dropped\n", 171 printk(KERN_ERR "%s: incoming packet dropped\n",
172 card->name); 172 card->name);
173 } else { 173 } else {
174 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 174 skb_put_data(skb, card->msgbuf, MsgLen);
175 memcpy(skb_put(skb, DataB3Len), card->databuf, DataB3Len); 175 skb_put_data(skb, card->databuf, DataB3Len);
176 capi_ctr_handle_message(ctrl, ApplId, skb); 176 capi_ctr_handle_message(ctrl, ApplId, skb);
177 } 177 }
178 break; 178 break;
@@ -186,7 +186,7 @@ static irqreturn_t t1isa_interrupt(int interrupt, void *devptr)
186 printk(KERN_ERR "%s: incoming packet dropped\n", 186 printk(KERN_ERR "%s: incoming packet dropped\n",
187 card->name); 187 card->name);
188 } else { 188 } else {
189 memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen); 189 skb_put_data(skb, card->msgbuf, MsgLen);
190 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3) 190 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3)
191 capilib_data_b3_conf(&cinfo->ncci_head, ApplId, 191 capilib_data_b3_conf(&cinfo->ncci_head, ApplId,
192 CAPIMSG_NCCI(skb->data), 192 CAPIMSG_NCCI(skb->data),
diff --git a/drivers/isdn/hardware/mISDN/hfcmulti.c b/drivers/isdn/hardware/mISDN/hfcmulti.c
index 961c07ee47b7..aea0c9616ea5 100644
--- a/drivers/isdn/hardware/mISDN/hfcmulti.c
+++ b/drivers/isdn/hardware/mISDN/hfcmulti.c
@@ -1926,7 +1926,7 @@ hfcmulti_dtmf(struct hfc_multi *hc)
1926 hh = mISDN_HEAD_P(skb); 1926 hh = mISDN_HEAD_P(skb);
1927 hh->prim = PH_CONTROL_IND; 1927 hh->prim = PH_CONTROL_IND;
1928 hh->id = DTMF_HFC_COEF; 1928 hh->id = DTMF_HFC_COEF;
1929 memcpy(skb_put(skb, 512), hc->chan[ch].coeff, 512); 1929 skb_put_data(skb, hc->chan[ch].coeff, 512);
1930 recv_Bchannel_skb(bch, skb); 1930 recv_Bchannel_skb(bch, skb);
1931 } 1931 }
1932 } 1932 }
@@ -2332,8 +2332,7 @@ next_frame:
2332 skb = *sp; 2332 skb = *sp;
2333 *sp = mI_alloc_skb(skb->len, GFP_ATOMIC); 2333 *sp = mI_alloc_skb(skb->len, GFP_ATOMIC);
2334 if (*sp) { 2334 if (*sp) {
2335 memcpy(skb_put(*sp, skb->len), 2335 skb_put_data(*sp, skb->data, skb->len);
2336 skb->data, skb->len);
2337 skb_trim(skb, 0); 2336 skb_trim(skb, 0);
2338 } else { 2337 } else {
2339 printk(KERN_DEBUG "%s: No mem\n", 2338 printk(KERN_DEBUG "%s: No mem\n",
diff --git a/drivers/isdn/hardware/mISDN/hfcsusb.c b/drivers/isdn/hardware/mISDN/hfcsusb.c
index 114f3bcba1b0..17cc879ad2bb 100644
--- a/drivers/isdn/hardware/mISDN/hfcsusb.c
+++ b/drivers/isdn/hardware/mISDN/hfcsusb.c
@@ -893,7 +893,7 @@ hfcsusb_rx_frame(struct usb_fifo *fifo, __u8 *data, unsigned int len,
893 } 893 }
894 } 894 }
895 895
896 memcpy(skb_put(rx_skb, len), data, len); 896 skb_put_data(rx_skb, data, len);
897 897
898 if (hdlc) { 898 if (hdlc) {
899 /* we have a complete hdlc packet */ 899 /* we have a complete hdlc packet */
diff --git a/drivers/isdn/hisax/amd7930_fn.c b/drivers/isdn/hisax/amd7930_fn.c
index 3a4c2f9e19e9..dcf4c2a9fcea 100644
--- a/drivers/isdn/hisax/amd7930_fn.c
+++ b/drivers/isdn/hisax/amd7930_fn.c
@@ -317,7 +317,8 @@ Amd7930_empty_Dfifo(struct IsdnCardState *cs, int flag)
317 debugl1(cs, "%s", cs->dlog); 317 debugl1(cs, "%s", cs->dlog);
318 } 318 }
319 /* moves received data in sk-buffer */ 319 /* moves received data in sk-buffer */
320 memcpy(skb_put(skb, cs->rcvidx), cs->rcvbuf, cs->rcvidx); 320 skb_put_data(skb, cs->rcvbuf,
321 cs->rcvidx);
321 skb_queue_tail(&cs->rq, skb); 322 skb_queue_tail(&cs->rq, skb);
322 } 323 }
323 } 324 }
diff --git a/drivers/isdn/hisax/avm_pci.c b/drivers/isdn/hisax/avm_pci.c
index d1427bd6452d..daf3742cdef6 100644
--- a/drivers/isdn/hisax/avm_pci.c
+++ b/drivers/isdn/hisax/avm_pci.c
@@ -378,8 +378,9 @@ HDLC_irq(struct BCState *bcs, u_int stat) {
378 if (!(skb = dev_alloc_skb(bcs->hw.hdlc.rcvidx))) 378 if (!(skb = dev_alloc_skb(bcs->hw.hdlc.rcvidx)))
379 printk(KERN_WARNING "HDLC: receive out of memory\n"); 379 printk(KERN_WARNING "HDLC: receive out of memory\n");
380 else { 380 else {
381 memcpy(skb_put(skb, bcs->hw.hdlc.rcvidx), 381 skb_put_data(skb,
382 bcs->hw.hdlc.rcvbuf, bcs->hw.hdlc.rcvidx); 382 bcs->hw.hdlc.rcvbuf,
383 bcs->hw.hdlc.rcvidx);
383 skb_queue_tail(&bcs->rqueue, skb); 384 skb_queue_tail(&bcs->rqueue, skb);
384 } 385 }
385 bcs->hw.hdlc.rcvidx = 0; 386 bcs->hw.hdlc.rcvidx = 0;
diff --git a/drivers/isdn/hisax/diva.c b/drivers/isdn/hisax/diva.c
index 079336e593f9..3fc94e7741ae 100644
--- a/drivers/isdn/hisax/diva.c
+++ b/drivers/isdn/hisax/diva.c
@@ -511,7 +511,8 @@ Memhscx_interrupt(struct IsdnCardState *cs, u_char val, u_char hscx)
511 if (!(skb = dev_alloc_skb(count))) 511 if (!(skb = dev_alloc_skb(count)))
512 printk(KERN_WARNING "HSCX: receive out of memory\n"); 512 printk(KERN_WARNING "HSCX: receive out of memory\n");
513 else { 513 else {
514 memcpy(skb_put(skb, count), bcs->hw.hscx.rcvbuf, count); 514 skb_put_data(skb, bcs->hw.hscx.rcvbuf,
515 count);
515 skb_queue_tail(&bcs->rqueue, skb); 516 skb_queue_tail(&bcs->rqueue, skb);
516 } 517 }
517 } 518 }
@@ -526,7 +527,8 @@ Memhscx_interrupt(struct IsdnCardState *cs, u_char val, u_char hscx)
526 if (!(skb = dev_alloc_skb(fifo_size))) 527 if (!(skb = dev_alloc_skb(fifo_size)))
527 printk(KERN_WARNING "HiSax: receive out of memory\n"); 528 printk(KERN_WARNING "HiSax: receive out of memory\n");
528 else { 529 else {
529 memcpy(skb_put(skb, fifo_size), bcs->hw.hscx.rcvbuf, fifo_size); 530 skb_put_data(skb, bcs->hw.hscx.rcvbuf,
531 fifo_size);
530 skb_queue_tail(&bcs->rqueue, skb); 532 skb_queue_tail(&bcs->rqueue, skb);
531 } 533 }
532 bcs->hw.hscx.rcvidx = 0; 534 bcs->hw.hscx.rcvidx = 0;
diff --git a/drivers/isdn/hisax/elsa_ser.c b/drivers/isdn/hisax/elsa_ser.c
index a2a358c1dc8e..999effd7a276 100644
--- a/drivers/isdn/hisax/elsa_ser.c
+++ b/drivers/isdn/hisax/elsa_ser.c
@@ -333,8 +333,8 @@ static inline void receive_chars(struct IsdnCardState *cs,
333 if (!(skb = dev_alloc_skb(cs->hw.elsa.rcvcnt))) 333 if (!(skb = dev_alloc_skb(cs->hw.elsa.rcvcnt)))
334 printk(KERN_WARNING "ElsaSER: receive out of memory\n"); 334 printk(KERN_WARNING "ElsaSER: receive out of memory\n");
335 else { 335 else {
336 memcpy(skb_put(skb, cs->hw.elsa.rcvcnt), cs->hw.elsa.rcvbuf, 336 skb_put_data(skb, cs->hw.elsa.rcvbuf,
337 cs->hw.elsa.rcvcnt); 337 cs->hw.elsa.rcvcnt);
338 skb_queue_tail(&cs->hw.elsa.bcs->rqueue, skb); 338 skb_queue_tail(&cs->hw.elsa.bcs->rqueue, skb);
339 } 339 }
340 schedule_event(cs->hw.elsa.bcs, B_RCVBUFREADY); 340 schedule_event(cs->hw.elsa.bcs, B_RCVBUFREADY);
diff --git a/drivers/isdn/hisax/hfc_usb.c b/drivers/isdn/hisax/hfc_usb.c
index 6dbd1f1da14f..ef4748083efd 100644
--- a/drivers/isdn/hisax/hfc_usb.c
+++ b/drivers/isdn/hisax/hfc_usb.c
@@ -799,7 +799,7 @@ collect_rx_frame(usb_fifo *fifo, __u8 *data, int len, int finish)
799 } 799 }
800 if (len) { 800 if (len) {
801 if (fifo->skbuff->len + len < fifo->max_size) { 801 if (fifo->skbuff->len + len < fifo->max_size) {
802 memcpy(skb_put(fifo->skbuff, len), data, len); 802 skb_put_data(fifo->skbuff, data, len);
803 } else { 803 } else {
804 DBG(HFCUSB_DBG_FIFO_ERR, 804 DBG(HFCUSB_DBG_FIFO_ERR,
805 "HCF-USB: got frame exceeded fifo->max_size(%d) fifo(%d)", 805 "HCF-USB: got frame exceeded fifo->max_size(%d) fifo(%d)",
diff --git a/drivers/isdn/hisax/hisax_fcpcipnp.c b/drivers/isdn/hisax/hisax_fcpcipnp.c
index 5e8a5d967162..5a9f39ed1d5d 100644
--- a/drivers/isdn/hisax/hisax_fcpcipnp.c
+++ b/drivers/isdn/hisax/hisax_fcpcipnp.c
@@ -495,8 +495,7 @@ static inline void hdlc_rpr_irq(struct fritz_bcs *bcs, u32 stat)
495 if (!skb) { 495 if (!skb) {
496 printk(KERN_WARNING "HDLC: receive out of memory\n"); 496 printk(KERN_WARNING "HDLC: receive out of memory\n");
497 } else { 497 } else {
498 memcpy(skb_put(skb, bcs->rcvidx), bcs->rcvbuf, 498 skb_put_data(skb, bcs->rcvbuf, bcs->rcvidx);
499 bcs->rcvidx);
500 DBG_SKB(1, skb); 499 DBG_SKB(1, skb);
501 B_L1L2(bcs, PH_DATA | INDICATION, skb); 500 B_L1L2(bcs, PH_DATA | INDICATION, skb);
502 } 501 }
diff --git a/drivers/isdn/hisax/hisax_isac.c b/drivers/isdn/hisax/hisax_isac.c
index 5154c252a25f..0f36375478c5 100644
--- a/drivers/isdn/hisax/hisax_isac.c
+++ b/drivers/isdn/hisax/hisax_isac.c
@@ -557,7 +557,7 @@ static inline void isac_rme_interrupt(struct isac *isac)
557 DBG(DBG_WARN, "no memory, dropping\n"); 557 DBG(DBG_WARN, "no memory, dropping\n");
558 goto out; 558 goto out;
559 } 559 }
560 memcpy(skb_put(skb, count), isac->rcvbuf, count); 560 skb_put_data(skb, isac->rcvbuf, count);
561 DBG_SKB(DBG_RPACKET, skb); 561 DBG_SKB(DBG_RPACKET, skb);
562 D_L1L2(isac, PH_DATA | INDICATION, skb); 562 D_L1L2(isac, PH_DATA | INDICATION, skb);
563out: 563out:
@@ -687,7 +687,7 @@ static inline void isacsx_rme_interrupt(struct isac *isac)
687 DBG(DBG_WARN, "no memory, dropping"); 687 DBG(DBG_WARN, "no memory, dropping");
688 goto out; 688 goto out;
689 } 689 }
690 memcpy(skb_put(skb, count), isac->rcvbuf, count); 690 skb_put_data(skb, isac->rcvbuf, count);
691 DBG_SKB(DBG_RPACKET, skb); 691 DBG_SKB(DBG_RPACKET, skb);
692 D_L1L2(isac, PH_DATA | INDICATION, skb); 692 D_L1L2(isac, PH_DATA | INDICATION, skb);
693out: 693out:
diff --git a/drivers/isdn/hisax/hscx_irq.c b/drivers/isdn/hisax/hscx_irq.c
index a8d6188402c6..0d7e783c8bef 100644
--- a/drivers/isdn/hisax/hscx_irq.c
+++ b/drivers/isdn/hisax/hscx_irq.c
@@ -169,7 +169,8 @@ hscx_interrupt(struct IsdnCardState *cs, u_char val, u_char hscx)
169 if (!(skb = dev_alloc_skb(count))) 169 if (!(skb = dev_alloc_skb(count)))
170 printk(KERN_WARNING "HSCX: receive out of memory\n"); 170 printk(KERN_WARNING "HSCX: receive out of memory\n");
171 else { 171 else {
172 memcpy(skb_put(skb, count), bcs->hw.hscx.rcvbuf, count); 172 skb_put_data(skb, bcs->hw.hscx.rcvbuf,
173 count);
173 skb_queue_tail(&bcs->rqueue, skb); 174 skb_queue_tail(&bcs->rqueue, skb);
174 } 175 }
175 } 176 }
@@ -184,7 +185,8 @@ hscx_interrupt(struct IsdnCardState *cs, u_char val, u_char hscx)
184 if (!(skb = dev_alloc_skb(fifo_size))) 185 if (!(skb = dev_alloc_skb(fifo_size)))
185 printk(KERN_WARNING "HiSax: receive out of memory\n"); 186 printk(KERN_WARNING "HiSax: receive out of memory\n");
186 else { 187 else {
187 memcpy(skb_put(skb, fifo_size), bcs->hw.hscx.rcvbuf, fifo_size); 188 skb_put_data(skb, bcs->hw.hscx.rcvbuf,
189 fifo_size);
188 skb_queue_tail(&bcs->rqueue, skb); 190 skb_queue_tail(&bcs->rqueue, skb);
189 } 191 }
190 bcs->hw.hscx.rcvidx = 0; 192 bcs->hw.hscx.rcvidx = 0;
diff --git a/drivers/isdn/hisax/icc.c b/drivers/isdn/hisax/icc.c
index c7c3797a817e..8d1804572b32 100644
--- a/drivers/isdn/hisax/icc.c
+++ b/drivers/isdn/hisax/icc.c
@@ -217,7 +217,7 @@ icc_interrupt(struct IsdnCardState *cs, u_char val)
217 if (!(skb = alloc_skb(count, GFP_ATOMIC))) 217 if (!(skb = alloc_skb(count, GFP_ATOMIC)))
218 printk(KERN_WARNING "HiSax: D receive out of memory\n"); 218 printk(KERN_WARNING "HiSax: D receive out of memory\n");
219 else { 219 else {
220 memcpy(skb_put(skb, count), cs->rcvbuf, count); 220 skb_put_data(skb, cs->rcvbuf, count);
221 skb_queue_tail(&cs->rq, skb); 221 skb_queue_tail(&cs->rq, skb);
222 } 222 }
223 } 223 }
diff --git a/drivers/isdn/hisax/ipacx.c b/drivers/isdn/hisax/ipacx.c
index 43effe7082ed..c426b4fea28a 100644
--- a/drivers/isdn/hisax/ipacx.c
+++ b/drivers/isdn/hisax/ipacx.c
@@ -350,7 +350,7 @@ dch_int(struct IsdnCardState *cs)
350 if (!(skb = dev_alloc_skb(count))) 350 if (!(skb = dev_alloc_skb(count)))
351 printk(KERN_WARNING "HiSax dch_int(): receive out of memory\n"); 351 printk(KERN_WARNING "HiSax dch_int(): receive out of memory\n");
352 else { 352 else {
353 memcpy(skb_put(skb, count), cs->rcvbuf, count); 353 skb_put_data(skb, cs->rcvbuf, count);
354 skb_queue_tail(&cs->rq, skb); 354 skb_queue_tail(&cs->rq, skb);
355 } 355 }
356 } 356 }
@@ -627,7 +627,8 @@ bch_int(struct IsdnCardState *cs, u_char hscx)
627 if (!(skb = dev_alloc_skb(count))) 627 if (!(skb = dev_alloc_skb(count)))
628 printk(KERN_WARNING "HiSax bch_int(): receive frame out of memory\n"); 628 printk(KERN_WARNING "HiSax bch_int(): receive frame out of memory\n");
629 else { 629 else {
630 memcpy(skb_put(skb, count), bcs->hw.hscx.rcvbuf, count); 630 skb_put_data(skb, bcs->hw.hscx.rcvbuf,
631 count);
631 skb_queue_tail(&bcs->rqueue, skb); 632 skb_queue_tail(&bcs->rqueue, skb);
632 } 633 }
633 } 634 }
@@ -644,7 +645,8 @@ bch_int(struct IsdnCardState *cs, u_char hscx)
644 if (!(skb = dev_alloc_skb(B_FIFO_SIZE))) 645 if (!(skb = dev_alloc_skb(B_FIFO_SIZE)))
645 printk(KERN_WARNING "HiSax bch_int(): receive transparent out of memory\n"); 646 printk(KERN_WARNING "HiSax bch_int(): receive transparent out of memory\n");
646 else { 647 else {
647 memcpy(skb_put(skb, B_FIFO_SIZE), bcs->hw.hscx.rcvbuf, B_FIFO_SIZE); 648 skb_put_data(skb, bcs->hw.hscx.rcvbuf,
649 B_FIFO_SIZE);
648 skb_queue_tail(&bcs->rqueue, skb); 650 skb_queue_tail(&bcs->rqueue, skb);
649 } 651 }
650 bcs->hw.hscx.rcvidx = 0; 652 bcs->hw.hscx.rcvidx = 0;
diff --git a/drivers/isdn/hisax/isac.c b/drivers/isdn/hisax/isac.c
index 4273b4548825..ea965f29a555 100644
--- a/drivers/isdn/hisax/isac.c
+++ b/drivers/isdn/hisax/isac.c
@@ -222,7 +222,7 @@ isac_interrupt(struct IsdnCardState *cs, u_char val)
222 if (!skb) 222 if (!skb)
223 printk(KERN_WARNING "HiSax: D receive out of memory\n"); 223 printk(KERN_WARNING "HiSax: D receive out of memory\n");
224 else { 224 else {
225 memcpy(skb_put(skb, count), cs->rcvbuf, count); 225 skb_put_data(skb, cs->rcvbuf, count);
226 skb_queue_tail(&cs->rq, skb); 226 skb_queue_tail(&cs->rq, skb);
227 } 227 }
228 } 228 }
diff --git a/drivers/isdn/hisax/isar.c b/drivers/isdn/hisax/isar.c
index 0dc60b287c4b..98b4b67ea337 100644
--- a/drivers/isdn/hisax/isar.c
+++ b/drivers/isdn/hisax/isar.c
@@ -458,7 +458,7 @@ send_DLE_ETX(struct BCState *bcs)
458 struct sk_buff *skb; 458 struct sk_buff *skb;
459 459
460 if ((skb = dev_alloc_skb(2))) { 460 if ((skb = dev_alloc_skb(2))) {
461 memcpy(skb_put(skb, 2), dleetx, 2); 461 skb_put_data(skb, dleetx, 2);
462 skb_queue_tail(&bcs->rqueue, skb); 462 skb_queue_tail(&bcs->rqueue, skb);
463 schedule_event(bcs, B_RCVBUFREADY); 463 schedule_event(bcs, B_RCVBUFREADY);
464 } else { 464 } else {
@@ -550,8 +550,8 @@ isar_rcv_frame(struct IsdnCardState *cs, struct BCState *bcs)
550 } else if (!(skb = dev_alloc_skb(bcs->hw.isar.rcvidx - 2))) { 550 } else if (!(skb = dev_alloc_skb(bcs->hw.isar.rcvidx - 2))) {
551 printk(KERN_WARNING "ISAR: receive out of memory\n"); 551 printk(KERN_WARNING "ISAR: receive out of memory\n");
552 } else { 552 } else {
553 memcpy(skb_put(skb, bcs->hw.isar.rcvidx - 2), 553 skb_put_data(skb, bcs->hw.isar.rcvbuf,
554 bcs->hw.isar.rcvbuf, bcs->hw.isar.rcvidx - 2); 554 bcs->hw.isar.rcvidx - 2);
555 skb_queue_tail(&bcs->rqueue, skb); 555 skb_queue_tail(&bcs->rqueue, skb);
556 schedule_event(bcs, B_RCVBUFREADY); 556 schedule_event(bcs, B_RCVBUFREADY);
557 } 557 }
diff --git a/drivers/isdn/hisax/isdnl2.c b/drivers/isdn/hisax/isdnl2.c
index c53a53f6efb6..1a40ed04cb52 100644
--- a/drivers/isdn/hisax/isdnl2.c
+++ b/drivers/isdn/hisax/isdnl2.c
@@ -433,7 +433,7 @@ send_uframe(struct PStack *st, u_char cmd, u_char cr)
433 printk(KERN_WARNING "isdl2 can't alloc sbbuff for send_uframe\n"); 433 printk(KERN_WARNING "isdl2 can't alloc sbbuff for send_uframe\n");
434 return; 434 return;
435 } 435 }
436 memcpy(skb_put(skb, i), tmp, i); 436 skb_put_data(skb, tmp, i);
437 enqueue_super(st, skb); 437 enqueue_super(st, skb);
438} 438}
439 439
@@ -894,7 +894,7 @@ enquiry_cr(struct PStack *st, u_char typ, u_char cr, u_char pf)
894 printk(KERN_WARNING "isdl2 can't alloc sbbuff for enquiry_cr\n"); 894 printk(KERN_WARNING "isdl2 can't alloc sbbuff for enquiry_cr\n");
895 return; 895 return;
896 } 896 }
897 memcpy(skb_put(skb, i), tmp, i); 897 skb_put_data(skb, tmp, i);
898 enqueue_super(st, skb); 898 enqueue_super(st, skb);
899} 899}
900 900
diff --git a/drivers/isdn/hisax/jade_irq.c b/drivers/isdn/hisax/jade_irq.c
index b930da9b5aa6..a89e2df911c5 100644
--- a/drivers/isdn/hisax/jade_irq.c
+++ b/drivers/isdn/hisax/jade_irq.c
@@ -147,7 +147,8 @@ jade_interrupt(struct IsdnCardState *cs, u_char val, u_char jade)
147 if (!(skb = dev_alloc_skb(count))) 147 if (!(skb = dev_alloc_skb(count)))
148 printk(KERN_WARNING "JADE %s receive out of memory\n", (jade ? "B" : "A")); 148 printk(KERN_WARNING "JADE %s receive out of memory\n", (jade ? "B" : "A"));
149 else { 149 else {
150 memcpy(skb_put(skb, count), bcs->hw.hscx.rcvbuf, count); 150 skb_put_data(skb, bcs->hw.hscx.rcvbuf,
151 count);
151 skb_queue_tail(&bcs->rqueue, skb); 152 skb_queue_tail(&bcs->rqueue, skb);
152 } 153 }
153 } 154 }
@@ -162,7 +163,8 @@ jade_interrupt(struct IsdnCardState *cs, u_char val, u_char jade)
162 if (!(skb = dev_alloc_skb(fifo_size))) 163 if (!(skb = dev_alloc_skb(fifo_size)))
163 printk(KERN_WARNING "HiSax: receive out of memory\n"); 164 printk(KERN_WARNING "HiSax: receive out of memory\n");
164 else { 165 else {
165 memcpy(skb_put(skb, fifo_size), bcs->hw.hscx.rcvbuf, fifo_size); 166 skb_put_data(skb, bcs->hw.hscx.rcvbuf,
167 fifo_size);
166 skb_queue_tail(&bcs->rqueue, skb); 168 skb_queue_tail(&bcs->rqueue, skb);
167 } 169 }
168 bcs->hw.hscx.rcvidx = 0; 170 bcs->hw.hscx.rcvidx = 0;
diff --git a/drivers/isdn/hisax/l3_1tr6.c b/drivers/isdn/hisax/l3_1tr6.c
index 875402e76d0a..da0a1c6aa329 100644
--- a/drivers/isdn/hisax/l3_1tr6.c
+++ b/drivers/isdn/hisax/l3_1tr6.c
@@ -149,7 +149,7 @@ l3_1tr6_setup_req(struct l3_process *pc, u_char pr, void *arg)
149 l = p - tmp; 149 l = p - tmp;
150 if (!(skb = l3_alloc_skb(l))) 150 if (!(skb = l3_alloc_skb(l)))
151 return; 151 return;
152 memcpy(skb_put(skb, l), tmp, l); 152 skb_put_data(skb, tmp, l);
153 L3DelTimer(&pc->timer); 153 L3DelTimer(&pc->timer);
154 L3AddTimer(&pc->timer, T303, CC_T303); 154 L3AddTimer(&pc->timer, T303, CC_T303);
155 newl3state(pc, 1); 155 newl3state(pc, 1);
@@ -497,7 +497,7 @@ l3_1tr6_setup_rsp(struct l3_process *pc, u_char pr, void *arg)
497 l = p - tmp; 497 l = p - tmp;
498 if (!(skb = l3_alloc_skb(l))) 498 if (!(skb = l3_alloc_skb(l)))
499 return; 499 return;
500 memcpy(skb_put(skb, l), tmp, l); 500 skb_put_data(skb, tmp, l);
501 l3_msg(pc->st, DL_DATA | REQUEST, skb); 501 l3_msg(pc->st, DL_DATA | REQUEST, skb);
502 L3DelTimer(&pc->timer); 502 L3DelTimer(&pc->timer);
503 L3AddTimer(&pc->timer, T313, CC_T313); 503 L3AddTimer(&pc->timer, T313, CC_T313);
@@ -543,7 +543,7 @@ l3_1tr6_disconnect_req(struct l3_process *pc, u_char pr, void *arg)
543 l = p - tmp; 543 l = p - tmp;
544 if (!(skb = l3_alloc_skb(l))) 544 if (!(skb = l3_alloc_skb(l)))
545 return; 545 return;
546 memcpy(skb_put(skb, l), tmp, l); 546 skb_put_data(skb, tmp, l);
547 l3_msg(pc->st, DL_DATA | REQUEST, skb); 547 l3_msg(pc->st, DL_DATA | REQUEST, skb);
548 L3AddTimer(&pc->timer, T305, CC_T305); 548 L3AddTimer(&pc->timer, T305, CC_T305);
549} 549}
@@ -602,7 +602,7 @@ l3_1tr6_t305(struct l3_process *pc, u_char pr, void *arg)
602 l = p - tmp; 602 l = p - tmp;
603 if (!(skb = l3_alloc_skb(l))) 603 if (!(skb = l3_alloc_skb(l)))
604 return; 604 return;
605 memcpy(skb_put(skb, l), tmp, l); 605 skb_put_data(skb, tmp, l);
606 l3_msg(pc->st, DL_DATA | REQUEST, skb); 606 l3_msg(pc->st, DL_DATA | REQUEST, skb);
607 L3AddTimer(&pc->timer, T308, CC_T308_1); 607 L3AddTimer(&pc->timer, T308, CC_T308_1);
608} 608}
diff --git a/drivers/isdn/hisax/l3dss1.c b/drivers/isdn/hisax/l3dss1.c
index cda700664e9c..18a3484b1f7e 100644
--- a/drivers/isdn/hisax/l3dss1.c
+++ b/drivers/isdn/hisax/l3dss1.c
@@ -525,7 +525,7 @@ l3dss1_message_cause(struct l3_process *pc, u_char mt, u_char cause)
525 l = p - tmp; 525 l = p - tmp;
526 if (!(skb = l3_alloc_skb(l))) 526 if (!(skb = l3_alloc_skb(l)))
527 return; 527 return;
528 memcpy(skb_put(skb, l), tmp, l); 528 skb_put_data(skb, tmp, l);
529 l3_msg(pc->st, DL_DATA | REQUEST, skb); 529 l3_msg(pc->st, DL_DATA | REQUEST, skb);
530} 530}
531 531
@@ -551,7 +551,7 @@ l3dss1_status_send(struct l3_process *pc, u_char pr, void *arg)
551 l = p - tmp; 551 l = p - tmp;
552 if (!(skb = l3_alloc_skb(l))) 552 if (!(skb = l3_alloc_skb(l)))
553 return; 553 return;
554 memcpy(skb_put(skb, l), tmp, l); 554 skb_put_data(skb, tmp, l);
555 l3_msg(pc->st, DL_DATA | REQUEST, skb); 555 l3_msg(pc->st, DL_DATA | REQUEST, skb);
556} 556}
557 557
@@ -587,7 +587,7 @@ l3dss1_msg_without_setup(struct l3_process *pc, u_char pr, void *arg)
587 l = p - tmp; 587 l = p - tmp;
588 if (!(skb = l3_alloc_skb(l))) 588 if (!(skb = l3_alloc_skb(l)))
589 return; 589 return;
590 memcpy(skb_put(skb, l), tmp, l); 590 skb_put_data(skb, tmp, l);
591 l3_msg(pc->st, DL_DATA | REQUEST, skb); 591 l3_msg(pc->st, DL_DATA | REQUEST, skb);
592 dss1_release_l3_process(pc); 592 dss1_release_l3_process(pc);
593} 593}
@@ -944,7 +944,7 @@ l3dss1_msg_with_uus(struct l3_process *pc, u_char cmd)
944 l = p - tmp; 944 l = p - tmp;
945 if (!(skb = l3_alloc_skb(l))) 945 if (!(skb = l3_alloc_skb(l)))
946 return; 946 return;
947 memcpy(skb_put(skb, l), tmp, l); 947 skb_put_data(skb, tmp, l);
948 l3_msg(pc->st, DL_DATA | REQUEST, skb); 948 l3_msg(pc->st, DL_DATA | REQUEST, skb);
949} /* l3dss1_msg_with_uus */ 949} /* l3dss1_msg_with_uus */
950 950
@@ -1420,7 +1420,7 @@ l3dss1_setup_req(struct l3_process *pc, u_char pr,
1420 l = p - tmp; 1420 l = p - tmp;
1421 if (!(skb = l3_alloc_skb(l))) 1421 if (!(skb = l3_alloc_skb(l)))
1422 return; 1422 return;
1423 memcpy(skb_put(skb, l), tmp, l); 1423 skb_put_data(skb, tmp, l);
1424 L3DelTimer(&pc->timer); 1424 L3DelTimer(&pc->timer);
1425 L3AddTimer(&pc->timer, T303, CC_T303); 1425 L3AddTimer(&pc->timer, T303, CC_T303);
1426 newl3state(pc, 1); 1426 newl3state(pc, 1);
@@ -1786,7 +1786,7 @@ l3dss1_disconnect_req(struct l3_process *pc, u_char pr, void *arg)
1786 l = p - tmp; 1786 l = p - tmp;
1787 if (!(skb = l3_alloc_skb(l))) 1787 if (!(skb = l3_alloc_skb(l)))
1788 return; 1788 return;
1789 memcpy(skb_put(skb, l), tmp, l); 1789 skb_put_data(skb, tmp, l);
1790 newl3state(pc, 11); 1790 newl3state(pc, 11);
1791 l3_msg(pc->st, DL_DATA | REQUEST, skb); 1791 l3_msg(pc->st, DL_DATA | REQUEST, skb);
1792 L3AddTimer(&pc->timer, T305, CC_T305); 1792 L3AddTimer(&pc->timer, T305, CC_T305);
@@ -1848,7 +1848,7 @@ l3dss1_reject_req(struct l3_process *pc, u_char pr, void *arg)
1848 l = p - tmp; 1848 l = p - tmp;
1849 if (!(skb = l3_alloc_skb(l))) 1849 if (!(skb = l3_alloc_skb(l)))
1850 return; 1850 return;
1851 memcpy(skb_put(skb, l), tmp, l); 1851 skb_put_data(skb, tmp, l);
1852 l3_msg(pc->st, DL_DATA | REQUEST, skb); 1852 l3_msg(pc->st, DL_DATA | REQUEST, skb);
1853 pc->st->l3.l3l4(pc->st, CC_RELEASE | INDICATION, pc); 1853 pc->st->l3.l3l4(pc->st, CC_RELEASE | INDICATION, pc);
1854 newl3state(pc, 0); 1854 newl3state(pc, 0);
@@ -2145,7 +2145,7 @@ static void l3dss1_redir_req(struct l3_process *pc, u_char pr, void *arg)
2145 2145
2146 l = p - tmp; 2146 l = p - tmp;
2147 if (!(skb = l3_alloc_skb(l))) return; 2147 if (!(skb = l3_alloc_skb(l))) return;
2148 memcpy(skb_put(skb, l), tmp, l); 2148 skb_put_data(skb, tmp, l);
2149 2149
2150 l3_msg(pc->st, DL_DATA | REQUEST, skb); 2150 l3_msg(pc->st, DL_DATA | REQUEST, skb);
2151} /* l3dss1_redir_req */ 2151} /* l3dss1_redir_req */
@@ -2216,7 +2216,7 @@ static int l3dss1_cmd_global(struct PStack *st, isdn_ctrl *ic)
2216 if (pc) dss1_release_l3_process(pc); 2216 if (pc) dss1_release_l3_process(pc);
2217 return (-2); 2217 return (-2);
2218 } 2218 }
2219 memcpy(skb_put(skb, l), temp, l); 2219 skb_put_data(skb, temp, l);
2220 2220
2221 if (pc) 2221 if (pc)
2222 { pc->prot.dss1.invoke_id = id; /* remember id */ 2222 { pc->prot.dss1.invoke_id = id; /* remember id */
@@ -2359,7 +2359,7 @@ l3dss1_t305(struct l3_process *pc, u_char pr, void *arg)
2359 l = p - tmp; 2359 l = p - tmp;
2360 if (!(skb = l3_alloc_skb(l))) 2360 if (!(skb = l3_alloc_skb(l)))
2361 return; 2361 return;
2362 memcpy(skb_put(skb, l), tmp, l); 2362 skb_put_data(skb, tmp, l);
2363 newl3state(pc, 19); 2363 newl3state(pc, 19);
2364 l3_msg(pc->st, DL_DATA | REQUEST, skb); 2364 l3_msg(pc->st, DL_DATA | REQUEST, skb);
2365 L3AddTimer(&pc->timer, T308, CC_T308_1); 2365 L3AddTimer(&pc->timer, T308, CC_T308_1);
@@ -2528,7 +2528,7 @@ l3dss1_suspend_req(struct l3_process *pc, u_char pr, void *arg)
2528 l = p - tmp; 2528 l = p - tmp;
2529 if (!(skb = l3_alloc_skb(l))) 2529 if (!(skb = l3_alloc_skb(l)))
2530 return; 2530 return;
2531 memcpy(skb_put(skb, l), tmp, l); 2531 skb_put_data(skb, tmp, l);
2532 l3_msg(pc->st, DL_DATA | REQUEST, skb); 2532 l3_msg(pc->st, DL_DATA | REQUEST, skb);
2533 newl3state(pc, 15); 2533 newl3state(pc, 15);
2534 L3AddTimer(&pc->timer, T319, CC_T319); 2534 L3AddTimer(&pc->timer, T319, CC_T319);
@@ -2603,7 +2603,7 @@ l3dss1_resume_req(struct l3_process *pc, u_char pr, void *arg)
2603 l = p - tmp; 2603 l = p - tmp;
2604 if (!(skb = l3_alloc_skb(l))) 2604 if (!(skb = l3_alloc_skb(l)))
2605 return; 2605 return;
2606 memcpy(skb_put(skb, l), tmp, l); 2606 skb_put_data(skb, tmp, l);
2607 l3_msg(pc->st, DL_DATA | REQUEST, skb); 2607 l3_msg(pc->st, DL_DATA | REQUEST, skb);
2608 newl3state(pc, 17); 2608 newl3state(pc, 17);
2609 L3AddTimer(&pc->timer, T318, CC_T318); 2609 L3AddTimer(&pc->timer, T318, CC_T318);
@@ -2721,7 +2721,7 @@ l3dss1_global_restart(struct l3_process *pc, u_char pr, void *arg)
2721 l = p - tmp; 2721 l = p - tmp;
2722 if (!(skb = l3_alloc_skb(l))) 2722 if (!(skb = l3_alloc_skb(l)))
2723 return; 2723 return;
2724 memcpy(skb_put(skb, l), tmp, l); 2724 skb_put_data(skb, tmp, l);
2725 newl3state(pc, 0); 2725 newl3state(pc, 0);
2726 l3_msg(pc->st, DL_DATA | REQUEST, skb); 2726 l3_msg(pc->st, DL_DATA | REQUEST, skb);
2727} 2727}
@@ -2929,7 +2929,7 @@ global_handler(struct PStack *st, int mt, struct sk_buff *skb)
2929 l = p - tmp; 2929 l = p - tmp;
2930 if (!(skb = l3_alloc_skb(l))) 2930 if (!(skb = l3_alloc_skb(l)))
2931 return; 2931 return;
2932 memcpy(skb_put(skb, l), tmp, l); 2932 skb_put_data(skb, tmp, l);
2933 l3_msg(proc->st, DL_DATA | REQUEST, skb); 2933 l3_msg(proc->st, DL_DATA | REQUEST, skb);
2934 } else { 2934 } else {
2935 if (st->l3.debug & L3_DEB_STATE) { 2935 if (st->l3.debug & L3_DEB_STATE) {
diff --git a/drivers/isdn/hisax/l3ni1.c b/drivers/isdn/hisax/l3ni1.c
index 8dc791bfaa6f..ea311e7df48e 100644
--- a/drivers/isdn/hisax/l3ni1.c
+++ b/drivers/isdn/hisax/l3ni1.c
@@ -454,7 +454,7 @@ l3ni1_message_plus_chid(struct l3_process *pc, u_char mt)
454 454
455 if (!(skb = l3_alloc_skb(7))) 455 if (!(skb = l3_alloc_skb(7)))
456 return; 456 return;
457 memcpy(skb_put(skb, 7), tmp, 7); 457 skb_put_data(skb, tmp, 7);
458 l3_msg(pc->st, DL_DATA | REQUEST, skb); 458 l3_msg(pc->st, DL_DATA | REQUEST, skb);
459} 459}
460 460
@@ -475,7 +475,7 @@ l3ni1_message_cause(struct l3_process *pc, u_char mt, u_char cause)
475 l = p - tmp; 475 l = p - tmp;
476 if (!(skb = l3_alloc_skb(l))) 476 if (!(skb = l3_alloc_skb(l)))
477 return; 477 return;
478 memcpy(skb_put(skb, l), tmp, l); 478 skb_put_data(skb, tmp, l);
479 l3_msg(pc->st, DL_DATA | REQUEST, skb); 479 l3_msg(pc->st, DL_DATA | REQUEST, skb);
480} 480}
481 481
@@ -501,7 +501,7 @@ l3ni1_status_send(struct l3_process *pc, u_char pr, void *arg)
501 l = p - tmp; 501 l = p - tmp;
502 if (!(skb = l3_alloc_skb(l))) 502 if (!(skb = l3_alloc_skb(l)))
503 return; 503 return;
504 memcpy(skb_put(skb, l), tmp, l); 504 skb_put_data(skb, tmp, l);
505 l3_msg(pc->st, DL_DATA | REQUEST, skb); 505 l3_msg(pc->st, DL_DATA | REQUEST, skb);
506} 506}
507 507
@@ -537,7 +537,7 @@ l3ni1_msg_without_setup(struct l3_process *pc, u_char pr, void *arg)
537 l = p - tmp; 537 l = p - tmp;
538 if (!(skb = l3_alloc_skb(l))) 538 if (!(skb = l3_alloc_skb(l)))
539 return; 539 return;
540 memcpy(skb_put(skb, l), tmp, l); 540 skb_put_data(skb, tmp, l);
541 l3_msg(pc->st, DL_DATA | REQUEST, skb); 541 l3_msg(pc->st, DL_DATA | REQUEST, skb);
542 ni1_release_l3_process(pc); 542 ni1_release_l3_process(pc);
543} 543}
@@ -894,7 +894,7 @@ l3ni1_msg_with_uus(struct l3_process *pc, u_char cmd)
894 l = p - tmp; 894 l = p - tmp;
895 if (!(skb = l3_alloc_skb(l))) 895 if (!(skb = l3_alloc_skb(l)))
896 return; 896 return;
897 memcpy(skb_put(skb, l), tmp, l); 897 skb_put_data(skb, tmp, l);
898 l3_msg(pc->st, DL_DATA | REQUEST, skb); 898 l3_msg(pc->st, DL_DATA | REQUEST, skb);
899} /* l3ni1_msg_with_uus */ 899} /* l3ni1_msg_with_uus */
900 900
@@ -1274,7 +1274,7 @@ l3ni1_setup_req(struct l3_process *pc, u_char pr,
1274 { 1274 {
1275 return; 1275 return;
1276 } 1276 }
1277 memcpy(skb_put(skb, l), tmp, l); 1277 skb_put_data(skb, tmp, l);
1278 L3DelTimer(&pc->timer); 1278 L3DelTimer(&pc->timer);
1279 L3AddTimer(&pc->timer, T303, CC_T303); 1279 L3AddTimer(&pc->timer, T303, CC_T303);
1280 newl3state(pc, 1); 1280 newl3state(pc, 1);
@@ -1640,7 +1640,7 @@ l3ni1_disconnect_req(struct l3_process *pc, u_char pr, void *arg)
1640 l = p - tmp; 1640 l = p - tmp;
1641 if (!(skb = l3_alloc_skb(l))) 1641 if (!(skb = l3_alloc_skb(l)))
1642 return; 1642 return;
1643 memcpy(skb_put(skb, l), tmp, l); 1643 skb_put_data(skb, tmp, l);
1644 newl3state(pc, 11); 1644 newl3state(pc, 11);
1645 l3_msg(pc->st, DL_DATA | REQUEST, skb); 1645 l3_msg(pc->st, DL_DATA | REQUEST, skb);
1646 L3AddTimer(&pc->timer, T305, CC_T305); 1646 L3AddTimer(&pc->timer, T305, CC_T305);
@@ -1704,7 +1704,7 @@ l3ni1_reject_req(struct l3_process *pc, u_char pr, void *arg)
1704 l = p - tmp; 1704 l = p - tmp;
1705 if (!(skb = l3_alloc_skb(l))) 1705 if (!(skb = l3_alloc_skb(l)))
1706 return; 1706 return;
1707 memcpy(skb_put(skb, l), tmp, l); 1707 skb_put_data(skb, tmp, l);
1708 l3_msg(pc->st, DL_DATA | REQUEST, skb); 1708 l3_msg(pc->st, DL_DATA | REQUEST, skb);
1709 pc->st->l3.l3l4(pc->st, CC_RELEASE | INDICATION, pc); 1709 pc->st->l3.l3l4(pc->st, CC_RELEASE | INDICATION, pc);
1710 newl3state(pc, 0); 1710 newl3state(pc, 0);
@@ -2001,7 +2001,7 @@ static void l3ni1_redir_req(struct l3_process *pc, u_char pr, void *arg)
2001 2001
2002 l = p - tmp; 2002 l = p - tmp;
2003 if (!(skb = l3_alloc_skb(l))) return; 2003 if (!(skb = l3_alloc_skb(l))) return;
2004 memcpy(skb_put(skb, l), tmp, l); 2004 skb_put_data(skb, tmp, l);
2005 2005
2006 l3_msg(pc->st, DL_DATA | REQUEST, skb); 2006 l3_msg(pc->st, DL_DATA | REQUEST, skb);
2007} /* l3ni1_redir_req */ 2007} /* l3ni1_redir_req */
@@ -2076,7 +2076,7 @@ static int l3ni1_cmd_global(struct PStack *st, isdn_ctrl *ic)
2076 if (pc) ni1_release_l3_process(pc); 2076 if (pc) ni1_release_l3_process(pc);
2077 return (-2); 2077 return (-2);
2078 } 2078 }
2079 memcpy(skb_put(skb, l), temp, l); 2079 skb_put_data(skb, temp, l);
2080 2080
2081 if (pc) 2081 if (pc)
2082 { pc->prot.ni1.invoke_id = id; /* remember id */ 2082 { pc->prot.ni1.invoke_id = id; /* remember id */
@@ -2219,7 +2219,7 @@ l3ni1_t305(struct l3_process *pc, u_char pr, void *arg)
2219 l = p - tmp; 2219 l = p - tmp;
2220 if (!(skb = l3_alloc_skb(l))) 2220 if (!(skb = l3_alloc_skb(l)))
2221 return; 2221 return;
2222 memcpy(skb_put(skb, l), tmp, l); 2222 skb_put_data(skb, tmp, l);
2223 newl3state(pc, 19); 2223 newl3state(pc, 19);
2224 l3_msg(pc->st, DL_DATA | REQUEST, skb); 2224 l3_msg(pc->st, DL_DATA | REQUEST, skb);
2225 L3AddTimer(&pc->timer, T308, CC_T308_1); 2225 L3AddTimer(&pc->timer, T308, CC_T308_1);
@@ -2388,7 +2388,7 @@ l3ni1_suspend_req(struct l3_process *pc, u_char pr, void *arg)
2388 l = p - tmp; 2388 l = p - tmp;
2389 if (!(skb = l3_alloc_skb(l))) 2389 if (!(skb = l3_alloc_skb(l)))
2390 return; 2390 return;
2391 memcpy(skb_put(skb, l), tmp, l); 2391 skb_put_data(skb, tmp, l);
2392 l3_msg(pc->st, DL_DATA | REQUEST, skb); 2392 l3_msg(pc->st, DL_DATA | REQUEST, skb);
2393 newl3state(pc, 15); 2393 newl3state(pc, 15);
2394 L3AddTimer(&pc->timer, T319, CC_T319); 2394 L3AddTimer(&pc->timer, T319, CC_T319);
@@ -2463,7 +2463,7 @@ l3ni1_resume_req(struct l3_process *pc, u_char pr, void *arg)
2463 l = p - tmp; 2463 l = p - tmp;
2464 if (!(skb = l3_alloc_skb(l))) 2464 if (!(skb = l3_alloc_skb(l)))
2465 return; 2465 return;
2466 memcpy(skb_put(skb, l), tmp, l); 2466 skb_put_data(skb, tmp, l);
2467 l3_msg(pc->st, DL_DATA | REQUEST, skb); 2467 l3_msg(pc->st, DL_DATA | REQUEST, skb);
2468 newl3state(pc, 17); 2468 newl3state(pc, 17);
2469 L3AddTimer(&pc->timer, T318, CC_T318); 2469 L3AddTimer(&pc->timer, T318, CC_T318);
@@ -2582,7 +2582,7 @@ l3ni1_global_restart(struct l3_process *pc, u_char pr, void *arg)
2582 l = p - tmp; 2582 l = p - tmp;
2583 if (!(skb = l3_alloc_skb(l))) 2583 if (!(skb = l3_alloc_skb(l)))
2584 return; 2584 return;
2585 memcpy(skb_put(skb, l), tmp, l); 2585 skb_put_data(skb, tmp, l);
2586 newl3state(pc, 0); 2586 newl3state(pc, 0);
2587 l3_msg(pc->st, DL_DATA | REQUEST, skb); 2587 l3_msg(pc->st, DL_DATA | REQUEST, skb);
2588} 2588}
@@ -2655,7 +2655,7 @@ static void l3ni1_SendSpid(struct l3_process *pc, u_char pr, struct sk_buff *skb
2655 *p++ = IE_SPID; 2655 *p++ = IE_SPID;
2656 *p++ = l; 2656 *p++ = l;
2657 2657
2658 memcpy(skb_put(skb, l), pSPID, l); 2658 skb_put_data(skb, pSPID, l);
2659 2659
2660 newl3state(pc, iNewState); 2660 newl3state(pc, iNewState);
2661 2661
@@ -2873,7 +2873,7 @@ global_handler(struct PStack *st, int mt, struct sk_buff *skb)
2873 l = p - tmp; 2873 l = p - tmp;
2874 if (!(skb = l3_alloc_skb(l))) 2874 if (!(skb = l3_alloc_skb(l)))
2875 return; 2875 return;
2876 memcpy(skb_put(skb, l), tmp, l); 2876 skb_put_data(skb, tmp, l);
2877 l3_msg(proc->st, DL_DATA | REQUEST, skb); 2877 l3_msg(proc->st, DL_DATA | REQUEST, skb);
2878 } else { 2878 } else {
2879 if (st->l3.debug & L3_DEB_STATE) { 2879 if (st->l3.debug & L3_DEB_STATE) {
diff --git a/drivers/isdn/hisax/netjet.c b/drivers/isdn/hisax/netjet.c
index 233e432e06f6..b7f54fa29228 100644
--- a/drivers/isdn/hisax/netjet.c
+++ b/drivers/isdn/hisax/netjet.c
@@ -383,7 +383,7 @@ static void got_frame(struct BCState *bcs, int count) {
383 if (!(skb = dev_alloc_skb(count))) 383 if (!(skb = dev_alloc_skb(count)))
384 printk(KERN_WARNING "TIGER: receive out of memory\n"); 384 printk(KERN_WARNING "TIGER: receive out of memory\n");
385 else { 385 else {
386 memcpy(skb_put(skb, count), bcs->hw.tiger.rcvbuf, count); 386 skb_put_data(skb, bcs->hw.tiger.rcvbuf, count);
387 skb_queue_tail(&bcs->rqueue, skb); 387 skb_queue_tail(&bcs->rqueue, skb);
388 } 388 }
389 test_and_set_bit(B_RCVBUFREADY, &bcs->event); 389 test_and_set_bit(B_RCVBUFREADY, &bcs->event);
diff --git a/drivers/isdn/hisax/st5481_usb.c b/drivers/isdn/hisax/st5481_usb.c
index a0fdbc074b98..1cb9930d5e24 100644
--- a/drivers/isdn/hisax/st5481_usb.c
+++ b/drivers/isdn/hisax/st5481_usb.c
@@ -527,7 +527,7 @@ static void usb_in_complete(struct urb *urb)
527 WARNING("receive out of memory\n"); 527 WARNING("receive out of memory\n");
528 break; 528 break;
529 } 529 }
530 memcpy(skb_put(skb, status), in->rcvbuf, status); 530 skb_put_data(skb, in->rcvbuf, status);
531 in->hisax_if->l1l2(in->hisax_if, PH_DATA | INDICATION, skb); 531 in->hisax_if->l1l2(in->hisax_if, PH_DATA | INDICATION, skb);
532 } else if (status == -HDLC_CRC_ERROR) { 532 } else if (status == -HDLC_CRC_ERROR) {
533 INFO("CRC error"); 533 INFO("CRC error");
diff --git a/drivers/isdn/hisax/w6692.c b/drivers/isdn/hisax/w6692.c
index c99f0ec58a01..6f6733b7c1e4 100644
--- a/drivers/isdn/hisax/w6692.c
+++ b/drivers/isdn/hisax/w6692.c
@@ -309,7 +309,9 @@ W6692B_interrupt(struct IsdnCardState *cs, u_char bchan)
309 if (!(skb = dev_alloc_skb(count))) 309 if (!(skb = dev_alloc_skb(count)))
310 printk(KERN_WARNING "W6692: Bchan receive out of memory\n"); 310 printk(KERN_WARNING "W6692: Bchan receive out of memory\n");
311 else { 311 else {
312 memcpy(skb_put(skb, count), bcs->hw.w6692.rcvbuf, count); 312 skb_put_data(skb,
313 bcs->hw.w6692.rcvbuf,
314 count);
313 skb_queue_tail(&bcs->rqueue, skb); 315 skb_queue_tail(&bcs->rqueue, skb);
314 } 316 }
315 } 317 }
@@ -332,7 +334,8 @@ W6692B_interrupt(struct IsdnCardState *cs, u_char bchan)
332 if (!(skb = dev_alloc_skb(W_B_FIFO_THRESH))) 334 if (!(skb = dev_alloc_skb(W_B_FIFO_THRESH)))
333 printk(KERN_WARNING "HiSax: receive out of memory\n"); 335 printk(KERN_WARNING "HiSax: receive out of memory\n");
334 else { 336 else {
335 memcpy(skb_put(skb, W_B_FIFO_THRESH), bcs->hw.w6692.rcvbuf, W_B_FIFO_THRESH); 337 skb_put_data(skb, bcs->hw.w6692.rcvbuf,
338 W_B_FIFO_THRESH);
336 skb_queue_tail(&bcs->rqueue, skb); 339 skb_queue_tail(&bcs->rqueue, skb);
337 } 340 }
338 bcs->hw.w6692.rcvidx = 0; 341 bcs->hw.w6692.rcvidx = 0;
@@ -441,7 +444,7 @@ StartW6692:
441 if (!(skb = alloc_skb(count, GFP_ATOMIC))) 444 if (!(skb = alloc_skb(count, GFP_ATOMIC)))
442 printk(KERN_WARNING "HiSax: D receive out of memory\n"); 445 printk(KERN_WARNING "HiSax: D receive out of memory\n");
443 else { 446 else {
444 memcpy(skb_put(skb, count), cs->rcvbuf, count); 447 skb_put_data(skb, cs->rcvbuf, count);
445 skb_queue_tail(&cs->rq, skb); 448 skb_queue_tail(&cs->rq, skb);
446 } 449 }
447 } 450 }
diff --git a/drivers/isdn/hysdn/hycapi.c b/drivers/isdn/hysdn/hycapi.c
index 93bae94314a6..87119b517508 100644
--- a/drivers/isdn/hysdn/hycapi.c
+++ b/drivers/isdn/hysdn/hycapi.c
@@ -171,16 +171,16 @@ hycapi_register_internal(struct capi_ctr *ctrl, __u16 appl,
171 card->myid); 171 card->myid);
172 return; 172 return;
173 } 173 }
174 memcpy(skb_put(skb, sizeof(__u16)), &len, sizeof(__u16)); 174 skb_put_data(skb, &len, sizeof(__u16));
175 memcpy(skb_put(skb, sizeof(__u16)), &appl, sizeof(__u16)); 175 skb_put_data(skb, &appl, sizeof(__u16));
176 memcpy(skb_put(skb, sizeof(__u8)), &_command, sizeof(_command)); 176 memcpy(skb_put(skb, sizeof(__u8)), &_command, sizeof(_command));
177 memcpy(skb_put(skb, sizeof(__u8)), &_subcommand, sizeof(_subcommand)); 177 memcpy(skb_put(skb, sizeof(__u8)), &_subcommand, sizeof(_subcommand));
178 memcpy(skb_put(skb, sizeof(__u16)), &MessageNumber, sizeof(__u16)); 178 skb_put_data(skb, &MessageNumber, sizeof(__u16));
179 memcpy(skb_put(skb, sizeof(__u16)), &MessageBufferSize, sizeof(__u16)); 179 skb_put_data(skb, &MessageBufferSize, sizeof(__u16));
180 memcpy(skb_put(skb, sizeof(__u16)), &(rp->level3cnt), sizeof(__u16)); 180 skb_put_data(skb, &(rp->level3cnt), sizeof(__u16));
181 memcpy(skb_put(skb, sizeof(__u16)), &(rp->datablkcnt), sizeof(__u16)); 181 skb_put_data(skb, &(rp->datablkcnt), sizeof(__u16));
182 memcpy(skb_put(skb, sizeof(__u16)), &(rp->datablklen), sizeof(__u16)); 182 skb_put_data(skb, &(rp->datablklen), sizeof(__u16));
183 memcpy(skb_put(skb, slen), ExtFeatureDefaults, slen); 183 skb_put_data(skb, ExtFeatureDefaults, slen);
184 hycapi_applications[appl - 1].ctrl_mask |= (1 << (ctrl->cnr - 1)); 184 hycapi_applications[appl - 1].ctrl_mask |= (1 << (ctrl->cnr - 1));
185 hycapi_send_message(ctrl, skb); 185 hycapi_send_message(ctrl, skb);
186} 186}
@@ -279,11 +279,11 @@ static void hycapi_release_internal(struct capi_ctr *ctrl, __u16 appl)
279 card->myid); 279 card->myid);
280 return; 280 return;
281 } 281 }
282 memcpy(skb_put(skb, sizeof(__u16)), &len, sizeof(__u16)); 282 skb_put_data(skb, &len, sizeof(__u16));
283 memcpy(skb_put(skb, sizeof(__u16)), &appl, sizeof(__u16)); 283 skb_put_data(skb, &appl, sizeof(__u16));
284 memcpy(skb_put(skb, sizeof(__u8)), &_command, sizeof(_command)); 284 memcpy(skb_put(skb, sizeof(__u8)), &_command, sizeof(_command));
285 memcpy(skb_put(skb, sizeof(__u8)), &_subcommand, sizeof(_subcommand)); 285 memcpy(skb_put(skb, sizeof(__u8)), &_subcommand, sizeof(_subcommand));
286 memcpy(skb_put(skb, sizeof(__u16)), &MessageNumber, sizeof(__u16)); 286 skb_put_data(skb, &MessageNumber, sizeof(__u16));
287 hycapi_send_message(ctrl, skb); 287 hycapi_send_message(ctrl, skb);
288 hycapi_applications[appl - 1].ctrl_mask &= ~(1 << (ctrl->cnr - 1)); 288 hycapi_applications[appl - 1].ctrl_mask &= ~(1 << (ctrl->cnr - 1));
289} 289}
@@ -557,10 +557,9 @@ hycapi_rx_capipkt(hysdn_card *card, unsigned char *buf, unsigned short len)
557 card->myid); 557 card->myid);
558 return; 558 return;
559 } 559 }
560 memcpy(skb_put(skb, MsgLen), buf, MsgLen); 560 skb_put_data(skb, buf, MsgLen);
561 memcpy(skb_put(skb, 2 * sizeof(__u32)), CP64, 2 * sizeof(__u32)); 561 skb_put_data(skb, CP64, 2 * sizeof(__u32));
562 memcpy(skb_put(skb, len - MsgLen), buf + MsgLen, 562 skb_put_data(skb, buf + MsgLen, len - MsgLen);
563 len - MsgLen);
564 CAPIMSG_SETLEN(skb->data, 30); 563 CAPIMSG_SETLEN(skb->data, 30);
565 } else { 564 } else {
566 if (!(skb = alloc_skb(len, GFP_ATOMIC))) { 565 if (!(skb = alloc_skb(len, GFP_ATOMIC))) {
@@ -568,7 +567,7 @@ hycapi_rx_capipkt(hysdn_card *card, unsigned char *buf, unsigned short len)
568 card->myid); 567 card->myid);
569 return; 568 return;
570 } 569 }
571 memcpy(skb_put(skb, len), buf, len); 570 skb_put_data(skb, buf, len);
572 } 571 }
573 switch (CAPIMSG_CMD(skb->data)) 572 switch (CAPIMSG_CMD(skb->data))
574 { 573 {
diff --git a/drivers/isdn/hysdn/hysdn_net.c b/drivers/isdn/hysdn/hysdn_net.c
index b93a4e9a8d34..8e9c34f33d86 100644
--- a/drivers/isdn/hysdn/hysdn_net.c
+++ b/drivers/isdn/hysdn/hysdn_net.c
@@ -201,7 +201,7 @@ hysdn_rx_netpkt(hysdn_card *card, unsigned char *buf, unsigned short len)
201 return; 201 return;
202 } 202 }
203 /* copy the data */ 203 /* copy the data */
204 memcpy(skb_put(skb, len), buf, len); 204 skb_put_data(skb, buf, len);
205 205
206 /* determine the used protocol */ 206 /* determine the used protocol */
207 skb->protocol = eth_type_trans(skb, dev); 207 skb->protocol = eth_type_trans(skb, dev);
diff --git a/drivers/isdn/i4l/isdn_ppp.c b/drivers/isdn/i4l/isdn_ppp.c
index 8aa158a09180..9ce23cf3d7d2 100644
--- a/drivers/isdn/i4l/isdn_ppp.c
+++ b/drivers/isdn/i4l/isdn_ppp.c
@@ -2258,8 +2258,7 @@ static void isdn_ppp_ccp_xmit_reset(struct ippp_struct *is, int proto,
2258 2258
2259 /* Now stuff remaining bytes */ 2259 /* Now stuff remaining bytes */
2260 if (len) { 2260 if (len) {
2261 p = skb_put(skb, len); 2261 p = skb_put_data(skb, data, len);
2262 memcpy(p, data, len);
2263 } 2262 }
2264 2263
2265 /* skb is now ready for xmit */ 2264 /* skb is now ready for xmit */
diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c
index ddd8207e4e54..d30130c8d0f3 100644
--- a/drivers/isdn/i4l/isdn_tty.c
+++ b/drivers/isdn/i4l/isdn_tty.c
@@ -474,7 +474,7 @@ isdn_tty_senddown(modem_info *info)
474 return; 474 return;
475 } 475 }
476 skb_reserve(skb, skb_res); 476 skb_reserve(skb, skb_res);
477 memcpy(skb_put(skb, buflen), info->port.xmit_buf, buflen); 477 skb_put_data(skb, info->port.xmit_buf, buflen);
478 info->xmit_count = 0; 478 info->xmit_count = 0;
479#ifdef CONFIG_ISDN_AUDIO 479#ifdef CONFIG_ISDN_AUDIO
480 if (info->vonline & 2) { 480 if (info->vonline & 2) {
diff --git a/drivers/isdn/i4l/isdn_v110.c b/drivers/isdn/i4l/isdn_v110.c
index 52827a80c51f..8b74ce412524 100644
--- a/drivers/isdn/i4l/isdn_v110.c
+++ b/drivers/isdn/i4l/isdn_v110.c
@@ -421,7 +421,7 @@ isdn_v110_sync(isdn_v110_stream *v)
421 } 421 }
422 if ((skb = dev_alloc_skb(v->framelen + v->skbres))) { 422 if ((skb = dev_alloc_skb(v->framelen + v->skbres))) {
423 skb_reserve(skb, v->skbres); 423 skb_reserve(skb, v->skbres);
424 memcpy(skb_put(skb, v->framelen), v->OfflineFrame, v->framelen); 424 skb_put_data(skb, v->OfflineFrame, v->framelen);
425 } 425 }
426 return skb; 426 return skb;
427} 427}
@@ -441,7 +441,7 @@ isdn_v110_idle(isdn_v110_stream *v)
441 } 441 }
442 if ((skb = dev_alloc_skb(v->framelen + v->skbres))) { 442 if ((skb = dev_alloc_skb(v->framelen + v->skbres))) {
443 skb_reserve(skb, v->skbres); 443 skb_reserve(skb, v->skbres);
444 memcpy(skb_put(skb, v->framelen), v->OnlineFrame, v->framelen); 444 skb_put_data(skb, v->OnlineFrame, v->framelen);
445 } 445 }
446 return skb; 446 return skb;
447} 447}
@@ -486,7 +486,7 @@ isdn_v110_encode(isdn_v110_stream *v, struct sk_buff *skb)
486 } 486 }
487 skb_reserve(nskb, v->skbres + sizeof(int)); 487 skb_reserve(nskb, v->skbres + sizeof(int));
488 if (skb->len == 0) { 488 if (skb->len == 0) {
489 memcpy(skb_put(nskb, v->framelen), v->OnlineFrame, v->framelen); 489 skb_put_data(nskb, v->OnlineFrame, v->framelen);
490 *((int *)skb_push(nskb, sizeof(int))) = 0; 490 *((int *)skb_push(nskb, sizeof(int))) = 0;
491 return nskb; 491 return nskb;
492 } 492 }
diff --git a/drivers/isdn/isdnloop/isdnloop.c b/drivers/isdn/isdnloop/isdnloop.c
index ef9c8e4f1fa2..7ac7badb8f55 100644
--- a/drivers/isdn/isdnloop/isdnloop.c
+++ b/drivers/isdn/isdnloop/isdnloop.c
@@ -479,7 +479,7 @@ isdnloop_fake(isdnloop_card *card, char *s, int ch)
479 } 479 }
480 if (ch >= 0) 480 if (ch >= 0)
481 sprintf(skb_put(skb, 3), "%02d;", ch); 481 sprintf(skb_put(skb, 3), "%02d;", ch);
482 memcpy(skb_put(skb, strlen(s)), s, strlen(s)); 482 skb_put_data(skb, s, strlen(s));
483 skb_queue_tail(&card->dqueue, skb); 483 skb_queue_tail(&card->dqueue, skb);
484 return 0; 484 return 0;
485} 485}
diff --git a/drivers/isdn/mISDN/dsp_cmx.c b/drivers/isdn/mISDN/dsp_cmx.c
index 8e3aa002767b..d4b6f01a3f0e 100644
--- a/drivers/isdn/mISDN/dsp_cmx.c
+++ b/drivers/isdn/mISDN/dsp_cmx.c
@@ -1595,8 +1595,7 @@ send_packet:
1595 thh = mISDN_HEAD_P(txskb); 1595 thh = mISDN_HEAD_P(txskb);
1596 thh->prim = DL_DATA_REQ; 1596 thh->prim = DL_DATA_REQ;
1597 thh->id = 0; 1597 thh->id = 0;
1598 memcpy(skb_put(txskb, len), nskb->data + preload, 1598 skb_put_data(txskb, nskb->data + preload, len);
1599 len);
1600 /* queue (trigger later) */ 1599 /* queue (trigger later) */
1601 skb_queue_tail(&dsp->sendq, txskb); 1600 skb_queue_tail(&dsp->sendq, txskb);
1602 } 1601 }
diff --git a/drivers/isdn/mISDN/layer2.c b/drivers/isdn/mISDN/layer2.c
index 5eb380a25903..7243a6746f8b 100644
--- a/drivers/isdn/mISDN/layer2.c
+++ b/drivers/isdn/mISDN/layer2.c
@@ -176,7 +176,7 @@ l2up_create(struct layer2 *l2, u_int prim, int len, void *arg)
176 hh->prim = prim; 176 hh->prim = prim;
177 hh->id = (l2->ch.nr << 16) | l2->ch.addr; 177 hh->id = (l2->ch.nr << 16) | l2->ch.addr;
178 if (len) 178 if (len)
179 memcpy(skb_put(skb, len), arg, len); 179 skb_put_data(skb, arg, len);
180 err = l2->up->send(l2->up, skb); 180 err = l2->up->send(l2->up, skb);
181 if (err) { 181 if (err) {
182 printk(KERN_WARNING "%s: dev %s err=%d\n", __func__, 182 printk(KERN_WARNING "%s: dev %s err=%d\n", __func__,
@@ -235,7 +235,7 @@ l2down_create(struct layer2 *l2, u_int prim, u_int id, int len, void *arg)
235 hh->prim = prim; 235 hh->prim = prim;
236 hh->id = id; 236 hh->id = id;
237 if (len) 237 if (len)
238 memcpy(skb_put(skb, len), arg, len); 238 skb_put_data(skb, arg, len);
239 err = l2down_raw(l2, skb); 239 err = l2down_raw(l2, skb);
240 if (err) 240 if (err)
241 dev_kfree_skb(skb); 241 dev_kfree_skb(skb);
@@ -640,7 +640,7 @@ send_uframe(struct layer2 *l2, struct sk_buff *skb, u_char cmd, u_char cr)
640 return; 640 return;
641 } 641 }
642 } 642 }
643 memcpy(skb_put(skb, i), tmp, i); 643 skb_put_data(skb, tmp, i);
644 enqueue_super(l2, skb); 644 enqueue_super(l2, skb);
645} 645}
646 646
@@ -1125,7 +1125,7 @@ enquiry_cr(struct layer2 *l2, u_char typ, u_char cr, u_char pf)
1125 mISDNDevName4ch(&l2->ch), __func__); 1125 mISDNDevName4ch(&l2->ch), __func__);
1126 return; 1126 return;
1127 } 1127 }
1128 memcpy(skb_put(skb, i), tmp, i); 1128 skb_put_data(skb, tmp, i);
1129 enqueue_super(l2, skb); 1129 enqueue_super(l2, skb);
1130} 1130}
1131 1131
diff --git a/drivers/isdn/mISDN/tei.c b/drivers/isdn/mISDN/tei.c
index 592f597d8951..908127efccf8 100644
--- a/drivers/isdn/mISDN/tei.c
+++ b/drivers/isdn/mISDN/tei.c
@@ -312,7 +312,7 @@ teiup_create(struct manager *mgr, u_int prim, int len, void *arg)
312 hh->prim = prim; 312 hh->prim = prim;
313 hh->id = (mgr->ch.nr << 16) | mgr->ch.addr; 313 hh->id = (mgr->ch.nr << 16) | mgr->ch.addr;
314 if (len) 314 if (len)
315 memcpy(skb_put(skb, len), arg, len); 315 skb_put_data(skb, arg, len);
316 err = mgr->up->send(mgr->up, skb); 316 err = mgr->up->send(mgr->up, skb);
317 if (err) { 317 if (err) {
318 printk(KERN_WARNING "%s: err=%d\n", __func__, err); 318 printk(KERN_WARNING "%s: err=%d\n", __func__, err);
diff --git a/drivers/media/dvb-core/dvb_net.c b/drivers/media/dvb-core/dvb_net.c
index 9947b342633e..bbaf0a8cae8b 100644
--- a/drivers/media/dvb-core/dvb_net.c
+++ b/drivers/media/dvb-core/dvb_net.c
@@ -828,8 +828,7 @@ static void dvb_net_ule(struct net_device *dev, const u8 *buf, size_t buf_len)
828 828
829 /* Copy data into our current skb. */ 829 /* Copy data into our current skb. */
830 h.how_much = min(h.priv->ule_sndu_remain, (int)h.ts_remain); 830 h.how_much = min(h.priv->ule_sndu_remain, (int)h.ts_remain);
831 memcpy(skb_put(h.priv->ule_skb, h.how_much), 831 skb_put_data(h.priv->ule_skb, h.from_where, h.how_much);
832 h.from_where, h.how_much);
833 h.priv->ule_sndu_remain -= h.how_much; 832 h.priv->ule_sndu_remain -= h.how_much;
834 h.ts_remain -= h.how_much; 833 h.ts_remain -= h.how_much;
835 h.from_where += h.how_much; 834 h.from_where += h.how_much;
diff --git a/drivers/media/radio/wl128x/fmdrv_common.c b/drivers/media/radio/wl128x/fmdrv_common.c
index 588e2d61c3b4..c67e055a12c9 100644
--- a/drivers/media/radio/wl128x/fmdrv_common.c
+++ b/drivers/media/radio/wl128x/fmdrv_common.c
@@ -442,7 +442,7 @@ static int fm_send_cmd(struct fmdev *fmdev, u8 fm_op, u16 type, void *payload,
442 fm_cb(skb)->fm_op = *((u8 *)payload + 2); 442 fm_cb(skb)->fm_op = *((u8 *)payload + 2);
443 } 443 }
444 if (payload != NULL) 444 if (payload != NULL)
445 memcpy(skb_put(skb, payload_len), payload, payload_len); 445 skb_put_data(skb, payload, payload_len);
446 446
447 fm_cb(skb)->completion = wait_completion; 447 fm_cb(skb)->completion = wait_completion;
448 skb_queue_tail(&fmdev->tx_q, skb); 448 skb_queue_tail(&fmdev->tx_q, skb);
diff --git a/drivers/misc/ti-st/st_core.c b/drivers/misc/ti-st/st_core.c
index 00051590e00f..eda8d407be28 100644
--- a/drivers/misc/ti-st/st_core.c
+++ b/drivers/misc/ti-st/st_core.c
@@ -262,7 +262,7 @@ void st_int_recv(void *disc_data,
262 while (count) { 262 while (count) {
263 if (st_gdata->rx_count) { 263 if (st_gdata->rx_count) {
264 len = min_t(unsigned int, st_gdata->rx_count, count); 264 len = min_t(unsigned int, st_gdata->rx_count, count);
265 memcpy(skb_put(st_gdata->rx_skb, len), ptr, len); 265 skb_put_data(st_gdata->rx_skb, ptr, len);
266 st_gdata->rx_count -= len; 266 st_gdata->rx_count -= len;
267 count -= len; 267 count -= len;
268 ptr += len; 268 ptr += len;
diff --git a/drivers/misc/ti-st/st_kim.c b/drivers/misc/ti-st/st_kim.c
index bf0d7708beac..e74413f882ab 100644
--- a/drivers/misc/ti-st/st_kim.c
+++ b/drivers/misc/ti-st/st_kim.c
@@ -152,7 +152,7 @@ static void kim_int_recv(struct kim_data_s *kim_gdata,
152 while (count) { 152 while (count) {
153 if (kim_gdata->rx_count) { 153 if (kim_gdata->rx_count) {
154 len = min_t(unsigned int, kim_gdata->rx_count, count); 154 len = min_t(unsigned int, kim_gdata->rx_count, count);
155 memcpy(skb_put(kim_gdata->rx_skb, len), ptr, len); 155 skb_put_data(kim_gdata->rx_skb, ptr, len);
156 kim_gdata->rx_count -= len; 156 kim_gdata->rx_count -= len;
157 count -= len; 157 count -= len;
158 ptr += len; 158 ptr += len;
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index 7d7a3cec149a..b796db7dd621 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -936,8 +936,7 @@ static void alb_send_lp_vid(struct slave *slave, u8 mac_addr[],
936 if (!skb) 936 if (!skb)
937 return; 937 return;
938 938
939 data = skb_put(skb, size); 939 data = skb_put_data(skb, &pkt, size);
940 memcpy(data, &pkt, size);
941 940
942 skb_reset_mac_header(skb); 941 skb_reset_mac_header(skb);
943 skb->network_header = skb->mac_header + ETH_HLEN; 942 skb->network_header = skb->mac_header + ETH_HLEN;
diff --git a/drivers/net/caif/caif_hsi.c b/drivers/net/caif/caif_hsi.c
index 71a7c3b44fdd..4534326e20ac 100644
--- a/drivers/net/caif/caif_hsi.c
+++ b/drivers/net/caif/caif_hsi.c
@@ -454,8 +454,7 @@ static int cfhsi_rx_desc(struct cfhsi_desc *desc, struct cfhsi *cfhsi)
454 } 454 }
455 caif_assert(skb != NULL); 455 caif_assert(skb != NULL);
456 456
457 dst = skb_put(skb, len); 457 dst = skb_put_data(skb, pfrm, len);
458 memcpy(dst, pfrm, len);
459 458
460 skb->protocol = htons(ETH_P_CAIF); 459 skb->protocol = htons(ETH_P_CAIF);
461 skb_reset_mac_header(skb); 460 skb_reset_mac_header(skb);
@@ -585,8 +584,7 @@ static int cfhsi_rx_pld(struct cfhsi_desc *desc, struct cfhsi *cfhsi)
585 } 584 }
586 caif_assert(skb != NULL); 585 caif_assert(skb != NULL);
587 586
588 dst = skb_put(skb, len); 587 dst = skb_put_data(skb, pcffrm, len);
589 memcpy(dst, pcffrm, len);
590 588
591 skb->protocol = htons(ETH_P_CAIF); 589 skb->protocol = htons(ETH_P_CAIF);
592 skb_reset_mac_header(skb); 590 skb_reset_mac_header(skb);
diff --git a/drivers/net/caif/caif_serial.c b/drivers/net/caif/caif_serial.c
index 76e1d3545105..5c57be2082ba 100644
--- a/drivers/net/caif/caif_serial.c
+++ b/drivers/net/caif/caif_serial.c
@@ -198,8 +198,7 @@ static void ldisc_receive(struct tty_struct *tty, const u8 *data,
198 skb = netdev_alloc_skb(ser->dev, count+1); 198 skb = netdev_alloc_skb(ser->dev, count+1);
199 if (skb == NULL) 199 if (skb == NULL)
200 return; 200 return;
201 p = skb_put(skb, count); 201 p = skb_put_data(skb, data, count);
202 memcpy(p, data, count);
203 202
204 skb->protocol = htons(ETH_P_CAIF); 203 skb->protocol = htons(ETH_P_CAIF);
205 skb_reset_mac_header(skb); 204 skb_reset_mac_header(skb);
diff --git a/drivers/net/caif/caif_spi.c b/drivers/net/caif/caif_spi.c
index fc21afe852b9..24a5f5ca2037 100644
--- a/drivers/net/caif/caif_spi.c
+++ b/drivers/net/caif/caif_spi.c
@@ -548,8 +548,7 @@ int cfspi_rxfrm(struct cfspi *cfspi, u8 *buf, size_t len)
548 skb = netdev_alloc_skb(cfspi->ndev, pkt_len + 1); 548 skb = netdev_alloc_skb(cfspi->ndev, pkt_len + 1);
549 caif_assert(skb != NULL); 549 caif_assert(skb != NULL);
550 550
551 dst = skb_put(skb, pkt_len); 551 dst = skb_put_data(skb, src, pkt_len);
552 memcpy(dst, src, pkt_len);
553 src += pkt_len; 552 src += pkt_len;
554 553
555 skb->protocol = htons(ETH_P_CAIF); 554 skb->protocol = htons(ETH_P_CAIF);
diff --git a/drivers/net/caif/caif_virtio.c b/drivers/net/caif/caif_virtio.c
index 1794ea0420b7..c3d104feee13 100644
--- a/drivers/net/caif/caif_virtio.c
+++ b/drivers/net/caif/caif_virtio.c
@@ -242,7 +242,7 @@ static struct sk_buff *cfv_alloc_and_copy_skb(int *err,
242 242
243 skb_reserve(skb, cfv->rx_hr + pad_len); 243 skb_reserve(skb, cfv->rx_hr + pad_len);
244 244
245 memcpy(skb_put(skb, cfpkt_len), frm + cfv->rx_hr, cfpkt_len); 245 skb_put_data(skb, frm + cfv->rx_hr, cfpkt_len);
246 return skb; 246 return skb;
247} 247}
248 248
diff --git a/drivers/net/can/slcan.c b/drivers/net/can/slcan.c
index 6a6e896e52fa..5d067c1b987f 100644
--- a/drivers/net/can/slcan.c
+++ b/drivers/net/can/slcan.c
@@ -216,8 +216,7 @@ static void slc_bump(struct slcan *sl)
216 can_skb_prv(skb)->ifindex = sl->dev->ifindex; 216 can_skb_prv(skb)->ifindex = sl->dev->ifindex;
217 can_skb_prv(skb)->skbcnt = 0; 217 can_skb_prv(skb)->skbcnt = 0;
218 218
219 memcpy(skb_put(skb, sizeof(struct can_frame)), 219 skb_put_data(skb, &cf, sizeof(struct can_frame));
220 &cf, sizeof(struct can_frame));
221 220
222 sl->dev->stats.rx_packets++; 221 sl->dev->stats.rx_packets++;
223 sl->dev->stats.rx_bytes += cf.can_dlc; 222 sl->dev->stats.rx_bytes += cf.can_dlc;
diff --git a/drivers/net/ethernet/3com/3c515.c b/drivers/net/ethernet/3com/3c515.c
index e7b1fa56b290..c5987f518cb2 100644
--- a/drivers/net/ethernet/3com/3c515.c
+++ b/drivers/net/ethernet/3com/3c515.c
@@ -1370,9 +1370,9 @@ static int boomerang_rx(struct net_device *dev)
1370 (skb = netdev_alloc_skb(dev, pkt_len + 4)) != NULL) { 1370 (skb = netdev_alloc_skb(dev, pkt_len + 4)) != NULL) {
1371 skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */ 1371 skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */
1372 /* 'skb_put()' points to the start of sk_buff data area. */ 1372 /* 'skb_put()' points to the start of sk_buff data area. */
1373 memcpy(skb_put(skb, pkt_len), 1373 skb_put_data(skb,
1374 isa_bus_to_virt(vp->rx_ring[entry]. 1374 isa_bus_to_virt(vp->rx_ring[entry].addr),
1375 addr), pkt_len); 1375 pkt_len);
1376 rx_copy++; 1376 rx_copy++;
1377 } else { 1377 } else {
1378 void *temp; 1378 void *temp;
diff --git a/drivers/net/ethernet/3com/3c59x.c b/drivers/net/ethernet/3com/3c59x.c
index 14cff6017756..3b516ebeeddb 100644
--- a/drivers/net/ethernet/3com/3c59x.c
+++ b/drivers/net/ethernet/3com/3c59x.c
@@ -2628,9 +2628,8 @@ boomerang_rx(struct net_device *dev)
2628 skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */ 2628 skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */
2629 pci_dma_sync_single_for_cpu(VORTEX_PCI(vp), dma, PKT_BUF_SZ, PCI_DMA_FROMDEVICE); 2629 pci_dma_sync_single_for_cpu(VORTEX_PCI(vp), dma, PKT_BUF_SZ, PCI_DMA_FROMDEVICE);
2630 /* 'skb_put()' points to the start of sk_buff data area. */ 2630 /* 'skb_put()' points to the start of sk_buff data area. */
2631 memcpy(skb_put(skb, pkt_len), 2631 skb_put_data(skb, vp->rx_skbuff[entry]->data,
2632 vp->rx_skbuff[entry]->data, 2632 pkt_len);
2633 pkt_len);
2634 pci_dma_sync_single_for_device(VORTEX_PCI(vp), dma, PKT_BUF_SZ, PCI_DMA_FROMDEVICE); 2633 pci_dma_sync_single_for_device(VORTEX_PCI(vp), dma, PKT_BUF_SZ, PCI_DMA_FROMDEVICE);
2635 vp->rx_copy++; 2634 vp->rx_copy++;
2636 } else { 2635 } else {
diff --git a/drivers/net/ethernet/aeroflex/greth.c b/drivers/net/ethernet/aeroflex/greth.c
index d8e133ced7b8..4309be3724ad 100644
--- a/drivers/net/ethernet/aeroflex/greth.c
+++ b/drivers/net/ethernet/aeroflex/greth.c
@@ -807,7 +807,8 @@ static int greth_rx(struct net_device *dev, int limit)
807 if (netif_msg_pktdata(greth)) 807 if (netif_msg_pktdata(greth))
808 greth_print_rx_packet(phys_to_virt(dma_addr), pkt_len); 808 greth_print_rx_packet(phys_to_virt(dma_addr), pkt_len);
809 809
810 memcpy(skb_put(skb, pkt_len), phys_to_virt(dma_addr), pkt_len); 810 skb_put_data(skb, phys_to_virt(dma_addr),
811 pkt_len);
811 812
812 skb->protocol = eth_type_trans(skb, dev); 813 skb->protocol = eth_type_trans(skb, dev);
813 dev->stats.rx_bytes += pkt_len; 814 dev->stats.rx_bytes += pkt_len;
diff --git a/drivers/net/ethernet/agere/et131x.c b/drivers/net/ethernet/agere/et131x.c
index 87a11b9f0ea5..54eff90e2f02 100644
--- a/drivers/net/ethernet/agere/et131x.c
+++ b/drivers/net/ethernet/agere/et131x.c
@@ -2282,7 +2282,7 @@ static struct rfd *nic_rx_pkts(struct et131x_adapter *adapter)
2282 2282
2283 adapter->netdev->stats.rx_bytes += rfd->len; 2283 adapter->netdev->stats.rx_bytes += rfd->len;
2284 2284
2285 memcpy(skb_put(skb, rfd->len), fbr->virt[buff_index], rfd->len); 2285 skb_put_data(skb, fbr->virt[buff_index], rfd->len);
2286 2286
2287 skb->protocol = eth_type_trans(skb, adapter->netdev); 2287 skb->protocol = eth_type_trans(skb, adapter->netdev);
2288 skb->ip_summed = CHECKSUM_NONE; 2288 skb->ip_summed = CHECKSUM_NONE;
diff --git a/drivers/net/ethernet/apple/macmace.c b/drivers/net/ethernet/apple/macmace.c
index 857df9c45f04..f17a160dbff2 100644
--- a/drivers/net/ethernet/apple/macmace.c
+++ b/drivers/net/ethernet/apple/macmace.c
@@ -663,7 +663,7 @@ static void mace_dma_rx_frame(struct net_device *dev, struct mace_frame *mf)
663 return; 663 return;
664 } 664 }
665 skb_reserve(skb, 2); 665 skb_reserve(skb, 2);
666 memcpy(skb_put(skb, frame_length), mf->data, frame_length); 666 skb_put_data(skb, mf->data, frame_length);
667 667
668 skb->protocol = eth_type_trans(skb, dev); 668 skb->protocol = eth_type_trans(skb, dev);
669 netif_rx(skb); 669 netif_rx(skb);
diff --git a/drivers/net/ethernet/aurora/nb8800.c b/drivers/net/ethernet/aurora/nb8800.c
index 5711fbbd6ae3..041cfb7952f8 100644
--- a/drivers/net/ethernet/aurora/nb8800.c
+++ b/drivers/net/ethernet/aurora/nb8800.c
@@ -251,7 +251,7 @@ static void nb8800_receive(struct net_device *dev, unsigned int i,
251 251
252 if (len <= RX_COPYBREAK) { 252 if (len <= RX_COPYBREAK) {
253 dma_sync_single_for_cpu(&dev->dev, dma, len, DMA_FROM_DEVICE); 253 dma_sync_single_for_cpu(&dev->dev, dma, len, DMA_FROM_DEVICE);
254 memcpy(skb_put(skb, len), data, len); 254 skb_put_data(skb, data, len);
255 dma_sync_single_for_device(&dev->dev, dma, len, 255 dma_sync_single_for_device(&dev->dev, dma, len,
256 DMA_FROM_DEVICE); 256 DMA_FROM_DEVICE);
257 } else { 257 } else {
@@ -264,7 +264,7 @@ static void nb8800_receive(struct net_device *dev, unsigned int i,
264 } 264 }
265 265
266 dma_unmap_page(&dev->dev, dma, RX_BUF_SIZE, DMA_FROM_DEVICE); 266 dma_unmap_page(&dev->dev, dma, RX_BUF_SIZE, DMA_FROM_DEVICE);
267 memcpy(skb_put(skb, RX_COPYHDR), data, RX_COPYHDR); 267 skb_put_data(skb, data, RX_COPYHDR);
268 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page, 268 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page,
269 offset + RX_COPYHDR, len - RX_COPYHDR, 269 offset + RX_COPYHDR, len - RX_COPYHDR,
270 RX_BUF_SIZE); 270 RX_BUF_SIZE);
diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
index 91f7492623d3..4b0168bcbc8a 100644
--- a/drivers/net/ethernet/cadence/macb.c
+++ b/drivers/net/ethernet/cadence/macb.c
@@ -2992,7 +2992,7 @@ static void at91ether_rx(struct net_device *dev)
2992 skb = netdev_alloc_skb(dev, pktlen + 2); 2992 skb = netdev_alloc_skb(dev, pktlen + 2);
2993 if (skb) { 2993 if (skb) {
2994 skb_reserve(skb, 2); 2994 skb_reserve(skb, 2);
2995 memcpy(skb_put(skb, pktlen), p_recv, pktlen); 2995 skb_put_data(skb, p_recv, pktlen);
2996 2996
2997 skb->protocol = eth_type_trans(skb, dev); 2997 skb->protocol = eth_type_trans(skb, dev);
2998 dev->stats.rx_packets++; 2998 dev->stats.rx_packets++;
diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_network.h b/drivers/net/ethernet/cavium/liquidio/octeon_network.h
index bf483932ff25..4b3507972243 100644
--- a/drivers/net/ethernet/cavium/liquidio/octeon_network.h
+++ b/drivers/net/ethernet/cavium/liquidio/octeon_network.h
@@ -443,8 +443,8 @@ static inline void octeon_fast_packet_next(struct octeon_droq *droq,
443 int copy_len, 443 int copy_len,
444 int idx) 444 int idx)
445{ 445{
446 memcpy(skb_put(nicbuf, copy_len), 446 skb_put_data(nicbuf, get_rbd(droq->recv_buf_list[idx].buffer),
447 get_rbd(droq->recv_buf_list[idx].buffer), copy_len); 447 copy_len);
448} 448}
449 449
450/** 450/**
diff --git a/drivers/net/ethernet/cirrus/cs89x0.c b/drivers/net/ethernet/cirrus/cs89x0.c
index da5b58b853e2..410a0a95130b 100644
--- a/drivers/net/ethernet/cirrus/cs89x0.c
+++ b/drivers/net/ethernet/cirrus/cs89x0.c
@@ -450,11 +450,10 @@ skip_this_frame:
450 450
451 if (bp + length > lp->end_dma_buff) { 451 if (bp + length > lp->end_dma_buff) {
452 int semi_cnt = lp->end_dma_buff - bp; 452 int semi_cnt = lp->end_dma_buff - bp;
453 memcpy(skb_put(skb, semi_cnt), bp, semi_cnt); 453 skb_put_data(skb, bp, semi_cnt);
454 memcpy(skb_put(skb, length - semi_cnt), lp->dma_buff, 454 skb_put_data(skb, lp->dma_buff, length - semi_cnt);
455 length - semi_cnt);
456 } else { 455 } else {
457 memcpy(skb_put(skb, length), bp, length); 456 skb_put_data(skb, bp, length);
458 } 457 }
459 bp += (length + 3) & ~3; 458 bp += (length + 3) & ~3;
460 if (bp >= lp->end_dma_buff) 459 if (bp >= lp->end_dma_buff)
diff --git a/drivers/net/ethernet/dec/tulip/de4x5.c b/drivers/net/ethernet/dec/tulip/de4x5.c
index fd6bcf024729..47be5018d35d 100644
--- a/drivers/net/ethernet/dec/tulip/de4x5.c
+++ b/drivers/net/ethernet/dec/tulip/de4x5.c
@@ -3624,10 +3624,10 @@ de4x5_alloc_rx_buff(struct net_device *dev, int index, int len)
3624 skb_reserve(p, 2); /* Align */ 3624 skb_reserve(p, 2); /* Align */
3625 if (index < lp->rx_old) { /* Wrapped buffer */ 3625 if (index < lp->rx_old) { /* Wrapped buffer */
3626 short tlen = (lp->rxRingSize - lp->rx_old) * RX_BUFF_SZ; 3626 short tlen = (lp->rxRingSize - lp->rx_old) * RX_BUFF_SZ;
3627 memcpy(skb_put(p,tlen),lp->rx_bufs + lp->rx_old * RX_BUFF_SZ,tlen); 3627 skb_put_data(p, lp->rx_bufs + lp->rx_old * RX_BUFF_SZ, tlen);
3628 memcpy(skb_put(p,len-tlen),lp->rx_bufs,len-tlen); 3628 skb_put_data(p, lp->rx_bufs, len - tlen);
3629 } else { /* Linear buffer */ 3629 } else { /* Linear buffer */
3630 memcpy(skb_put(p,len),lp->rx_bufs + lp->rx_old * RX_BUFF_SZ,len); 3630 skb_put_data(p, lp->rx_bufs + lp->rx_old * RX_BUFF_SZ, len);
3631 } 3631 }
3632 3632
3633 return p; 3633 return p;
diff --git a/drivers/net/ethernet/dec/tulip/interrupt.c b/drivers/net/ethernet/dec/tulip/interrupt.c
index ba6ae24acf62..8df80880ecaa 100644
--- a/drivers/net/ethernet/dec/tulip/interrupt.c
+++ b/drivers/net/ethernet/dec/tulip/interrupt.c
@@ -218,9 +218,9 @@ int tulip_poll(struct napi_struct *napi, int budget)
218 pkt_len); 218 pkt_len);
219 skb_put(skb, pkt_len); 219 skb_put(skb, pkt_len);
220#else 220#else
221 memcpy(skb_put(skb, pkt_len), 221 skb_put_data(skb,
222 tp->rx_buffers[entry].skb->data, 222 tp->rx_buffers[entry].skb->data,
223 pkt_len); 223 pkt_len);
224#endif 224#endif
225 pci_dma_sync_single_for_device(tp->pdev, 225 pci_dma_sync_single_for_device(tp->pdev,
226 tp->rx_buffers[entry].mapping, 226 tp->rx_buffers[entry].mapping,
@@ -444,9 +444,9 @@ static int tulip_rx(struct net_device *dev)
444 pkt_len); 444 pkt_len);
445 skb_put(skb, pkt_len); 445 skb_put(skb, pkt_len);
446#else 446#else
447 memcpy(skb_put(skb, pkt_len), 447 skb_put_data(skb,
448 tp->rx_buffers[entry].skb->data, 448 tp->rx_buffers[entry].skb->data,
449 pkt_len); 449 pkt_len);
450#endif 450#endif
451 pci_dma_sync_single_for_device(tp->pdev, 451 pci_dma_sync_single_for_device(tp->pdev,
452 tp->rx_buffers[entry].mapping, 452 tp->rx_buffers[entry].mapping,
diff --git a/drivers/net/ethernet/dec/tulip/uli526x.c b/drivers/net/ethernet/dec/tulip/uli526x.c
index 8d98b259d1ba..7fc248efc4ba 100644
--- a/drivers/net/ethernet/dec/tulip/uli526x.c
+++ b/drivers/net/ethernet/dec/tulip/uli526x.c
@@ -864,9 +864,9 @@ static void uli526x_rx_packet(struct net_device *dev, struct uli526x_board_info
864 skb = new_skb; 864 skb = new_skb;
865 /* size less than COPY_SIZE, allocate a rxlen SKB */ 865 /* size less than COPY_SIZE, allocate a rxlen SKB */
866 skb_reserve(skb, 2); /* 16byte align */ 866 skb_reserve(skb, 2); /* 16byte align */
867 memcpy(skb_put(skb, rxlen), 867 skb_put_data(skb,
868 skb_tail_pointer(rxptr->rx_skb_ptr), 868 skb_tail_pointer(rxptr->rx_skb_ptr),
869 rxlen); 869 rxlen);
870 uli526x_reuse_skb(db, rxptr->rx_skb_ptr); 870 uli526x_reuse_skb(db, rxptr->rx_skb_ptr);
871 } else 871 } else
872 skb_put(skb, rxlen); 872 skb_put(skb, rxlen);
diff --git a/drivers/net/ethernet/ec_bhf.c b/drivers/net/ethernet/ec_bhf.c
index 278f139f2a22..4ee042c034a1 100644
--- a/drivers/net/ethernet/ec_bhf.c
+++ b/drivers/net/ethernet/ec_bhf.c
@@ -223,7 +223,7 @@ static void ec_bhf_process_rx(struct ec_bhf_priv *priv)
223 223
224 skb = netdev_alloc_skb_ip_align(priv->net_dev, pkt_size); 224 skb = netdev_alloc_skb_ip_align(priv->net_dev, pkt_size);
225 if (skb) { 225 if (skb) {
226 memcpy(skb_put(skb, pkt_size), data, pkt_size); 226 skb_put_data(skb, data, pkt_size);
227 skb->protocol = eth_type_trans(skb, priv->net_dev); 227 skb->protocol = eth_type_trans(skb, priv->net_dev);
228 priv->stat_rx_bytes += pkt_size; 228 priv->stat_rx_bytes += pkt_size;
229 229
diff --git a/drivers/net/ethernet/fealnx.c b/drivers/net/ethernet/fealnx.c
index 610f9c07c21d..e92859dab7ae 100644
--- a/drivers/net/ethernet/fealnx.c
+++ b/drivers/net/ethernet/fealnx.c
@@ -1711,8 +1711,8 @@ static int netdev_rx(struct net_device *dev)
1711 np->cur_rx->skbuff->data, pkt_len); 1711 np->cur_rx->skbuff->data, pkt_len);
1712 skb_put(skb, pkt_len); 1712 skb_put(skb, pkt_len);
1713#else 1713#else
1714 memcpy(skb_put(skb, pkt_len), 1714 skb_put_data(skb, np->cur_rx->skbuff->data,
1715 np->cur_rx->skbuff->data, pkt_len); 1715 pkt_len);
1716#endif 1716#endif
1717 pci_dma_sync_single_for_device(np->pci_dev, 1717 pci_dma_sync_single_for_device(np->pci_dev,
1718 np->cur_rx->buffer, 1718 np->cur_rx->buffer,
diff --git a/drivers/net/ethernet/i825xx/82596.c b/drivers/net/ethernet/i825xx/82596.c
index 945883842533..d719668a6684 100644
--- a/drivers/net/ethernet/i825xx/82596.c
+++ b/drivers/net/ethernet/i825xx/82596.c
@@ -809,7 +809,8 @@ memory_squeeze:
809 if (!rx_in_place) { 809 if (!rx_in_place) {
810 /* 16 byte align the data fields */ 810 /* 16 byte align the data fields */
811 skb_reserve(skb, 2); 811 skb_reserve(skb, 2);
812 memcpy(skb_put(skb,pkt_len), rbd->v_data, pkt_len); 812 skb_put_data(skb, rbd->v_data,
813 pkt_len);
813 } 814 }
814 skb->protocol=eth_type_trans(skb,dev); 815 skb->protocol=eth_type_trans(skb,dev);
815 skb->len = pkt_len; 816 skb->len = pkt_len;
diff --git a/drivers/net/ethernet/i825xx/lib82596.c b/drivers/net/ethernet/i825xx/lib82596.c
index e86773325cbe..8449c58f01fd 100644
--- a/drivers/net/ethernet/i825xx/lib82596.c
+++ b/drivers/net/ethernet/i825xx/lib82596.c
@@ -727,7 +727,8 @@ memory_squeeze:
727 dma_sync_single_for_cpu(dev->dev.parent, 727 dma_sync_single_for_cpu(dev->dev.parent,
728 (dma_addr_t)SWAP32(rbd->b_data), 728 (dma_addr_t)SWAP32(rbd->b_data),
729 PKT_BUF_SZ, DMA_FROM_DEVICE); 729 PKT_BUF_SZ, DMA_FROM_DEVICE);
730 memcpy(skb_put(skb, pkt_len), rbd->v_data, pkt_len); 730 skb_put_data(skb, rbd->v_data,
731 pkt_len);
731 dma_sync_single_for_device(dev->dev.parent, 732 dma_sync_single_for_device(dev->dev.parent,
732 (dma_addr_t)SWAP32(rbd->b_data), 733 (dma_addr_t)SWAP32(rbd->b_data),
733 PKT_BUF_SZ, DMA_FROM_DEVICE); 734 PKT_BUF_SZ, DMA_FROM_DEVICE);
diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
index bd8b05fe8258..98375e1e1185 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -4345,7 +4345,7 @@ static struct sk_buff *e1000_copybreak(struct e1000_adapter *adapter,
4345 dma_sync_single_for_cpu(&adapter->pdev->dev, buffer_info->dma, 4345 dma_sync_single_for_cpu(&adapter->pdev->dev, buffer_info->dma,
4346 length, DMA_FROM_DEVICE); 4346 length, DMA_FROM_DEVICE);
4347 4347
4348 memcpy(skb_put(skb, length), data, length); 4348 skb_put_data(skb, data, length);
4349 4349
4350 return skb; 4350 return skb;
4351} 4351}
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index d297011b535d..0aab74c2a209 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -1976,9 +1976,8 @@ err_drop_frame:
1976 MVNETA_MH_SIZE + NET_SKB_PAD, 1976 MVNETA_MH_SIZE + NET_SKB_PAD,
1977 rx_bytes, 1977 rx_bytes,
1978 DMA_FROM_DEVICE); 1978 DMA_FROM_DEVICE);
1979 memcpy(skb_put(skb, rx_bytes), 1979 skb_put_data(skb, data + MVNETA_MH_SIZE + NET_SKB_PAD,
1980 data + MVNETA_MH_SIZE + NET_SKB_PAD, 1980 rx_bytes);
1981 rx_bytes);
1982 1981
1983 skb->protocol = eth_type_trans(skb, dev); 1982 skb->protocol = eth_type_trans(skb, dev);
1984 mvneta_rx_csum(pp, rx_status, skb); 1983 mvneta_rx_csum(pp, rx_status, skb);
@@ -2103,9 +2102,8 @@ err_drop_frame:
2103 MVNETA_MH_SIZE + NET_SKB_PAD, 2102 MVNETA_MH_SIZE + NET_SKB_PAD,
2104 rx_bytes, 2103 rx_bytes,
2105 DMA_FROM_DEVICE); 2104 DMA_FROM_DEVICE);
2106 memcpy(skb_put(skb, rx_bytes), 2105 skb_put_data(skb, data + MVNETA_MH_SIZE + NET_SKB_PAD,
2107 data + MVNETA_MH_SIZE + NET_SKB_PAD, 2106 rx_bytes);
2108 rx_bytes);
2109 2107
2110 skb->protocol = eth_type_trans(skb, dev); 2108 skb->protocol = eth_type_trans(skb, dev);
2111 mvneta_rx_csum(pp, rx_status, skb); 2109 mvneta_rx_csum(pp, rx_status, skb);
diff --git a/drivers/net/ethernet/micrel/ksz884x.c b/drivers/net/ethernet/micrel/ksz884x.c
index ee1c78abab0b..e798fbe08600 100644
--- a/drivers/net/ethernet/micrel/ksz884x.c
+++ b/drivers/net/ethernet/micrel/ksz884x.c
@@ -5020,8 +5020,7 @@ static inline int rx_proc(struct net_device *dev, struct ksz_hw* hw,
5020 */ 5020 */
5021 skb_reserve(skb, 2); 5021 skb_reserve(skb, 2);
5022 5022
5023 memcpy(skb_put(skb, packet_len), 5023 skb_put_data(skb, dma_buf->skb->data, packet_len);
5024 dma_buf->skb->data, packet_len);
5025 } while (0); 5024 } while (0);
5026 5025
5027 skb->protocol = eth_type_trans(skb, dev); 5026 skb->protocol = eth_type_trans(skb, dev);
diff --git a/drivers/net/ethernet/nxp/lpc_eth.c b/drivers/net/ethernet/nxp/lpc_eth.c
index 9c7ffd649e9a..828bfd93cb54 100644
--- a/drivers/net/ethernet/nxp/lpc_eth.c
+++ b/drivers/net/ethernet/nxp/lpc_eth.c
@@ -959,11 +959,10 @@ static int __lpc_handle_recv(struct net_device *ndev, int budget)
959 if (!skb) { 959 if (!skb) {
960 ndev->stats.rx_dropped++; 960 ndev->stats.rx_dropped++;
961 } else { 961 } else {
962 prdbuf = skb_put(skb, len);
963
964 /* Copy packet from buffer */ 962 /* Copy packet from buffer */
965 memcpy(prdbuf, pldat->rx_buff_v + 963 prdbuf = skb_put_data(skb,
966 rxconsidx * ENET_MAXF_SIZE, len); 964 pldat->rx_buff_v + rxconsidx * ENET_MAXF_SIZE,
965 len);
967 966
968 /* Pass to upper layer */ 967 /* Pass to upper layer */
969 skb->protocol = eth_type_trans(skb, ndev); 968 skb->protocol = eth_type_trans(skb, ndev);
diff --git a/drivers/net/ethernet/qlogic/qede/qede_fp.c b/drivers/net/ethernet/qlogic/qede/qede_fp.c
index 892eb98290f6..6fc854b120b0 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_fp.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_fp.c
@@ -1079,8 +1079,7 @@ static struct sk_buff *qede_rx_allocate_skb(struct qede_dev *edev,
1079 * re-use the already allcoated & mapped memory. 1079 * re-use the already allcoated & mapped memory.
1080 */ 1080 */
1081 if (len + pad <= edev->rx_copybreak) { 1081 if (len + pad <= edev->rx_copybreak) {
1082 memcpy(skb_put(skb, len), 1082 skb_put_data(skb, page_address(page) + offset, len);
1083 page_address(page) + offset, len);
1084 qede_reuse_page(rxq, bd); 1083 qede_reuse_page(rxq, bd);
1085 goto out; 1084 goto out;
1086 } 1085 }
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
index 1188d420fe53..9feec7009443 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
@@ -1577,7 +1577,7 @@ static void ql_process_mac_rx_page(struct ql_adapter *qdev,
1577 rx_ring->rx_dropped++; 1577 rx_ring->rx_dropped++;
1578 goto err_out; 1578 goto err_out;
1579 } 1579 }
1580 memcpy(skb_put(skb, hlen), addr, hlen); 1580 skb_put_data(skb, addr, hlen);
1581 netif_printk(qdev, rx_status, KERN_DEBUG, qdev->ndev, 1581 netif_printk(qdev, rx_status, KERN_DEBUG, qdev->ndev,
1582 "%d bytes of headers and data in large. Chain page to new skb and pull tail.\n", 1582 "%d bytes of headers and data in large. Chain page to new skb and pull tail.\n",
1583 length); 1583 length);
@@ -1654,7 +1654,7 @@ static void ql_process_mac_rx_skb(struct ql_adapter *qdev,
1654 dma_unmap_len(sbq_desc, maplen), 1654 dma_unmap_len(sbq_desc, maplen),
1655 PCI_DMA_FROMDEVICE); 1655 PCI_DMA_FROMDEVICE);
1656 1656
1657 memcpy(skb_put(new_skb, length), skb->data, length); 1657 skb_put_data(new_skb, skb->data, length);
1658 1658
1659 pci_dma_sync_single_for_device(qdev->pdev, 1659 pci_dma_sync_single_for_device(qdev->pdev,
1660 dma_unmap_addr(sbq_desc, mapaddr), 1660 dma_unmap_addr(sbq_desc, mapaddr),
@@ -1817,8 +1817,7 @@ static struct sk_buff *ql_build_rx_skb(struct ql_adapter *qdev,
1817 dma_unmap_len 1817 dma_unmap_len
1818 (sbq_desc, maplen), 1818 (sbq_desc, maplen),
1819 PCI_DMA_FROMDEVICE); 1819 PCI_DMA_FROMDEVICE);
1820 memcpy(skb_put(skb, length), 1820 skb_put_data(skb, sbq_desc->p.skb->data, length);
1821 sbq_desc->p.skb->data, length);
1822 pci_dma_sync_single_for_device(qdev->pdev, 1821 pci_dma_sync_single_for_device(qdev->pdev,
1823 dma_unmap_addr 1822 dma_unmap_addr
1824 (sbq_desc, 1823 (sbq_desc,
diff --git a/drivers/net/ethernet/silan/sc92031.c b/drivers/net/ethernet/silan/sc92031.c
index 751c81848f35..c07fd594fe71 100644
--- a/drivers/net/ethernet/silan/sc92031.c
+++ b/drivers/net/ethernet/silan/sc92031.c
@@ -795,12 +795,12 @@ static void _sc92031_rx_tasklet(struct net_device *dev)
795 } 795 }
796 796
797 if ((rx_ring_offset + pkt_size) > RX_BUF_LEN) { 797 if ((rx_ring_offset + pkt_size) > RX_BUF_LEN) {
798 memcpy(skb_put(skb, RX_BUF_LEN - rx_ring_offset), 798 skb_put_data(skb, rx_ring + rx_ring_offset,
799 rx_ring + rx_ring_offset, RX_BUF_LEN - rx_ring_offset); 799 RX_BUF_LEN - rx_ring_offset);
800 memcpy(skb_put(skb, pkt_size - (RX_BUF_LEN - rx_ring_offset)), 800 skb_put_data(skb, rx_ring,
801 rx_ring, pkt_size - (RX_BUF_LEN - rx_ring_offset)); 801 pkt_size - (RX_BUF_LEN - rx_ring_offset));
802 } else { 802 } else {
803 memcpy(skb_put(skb, pkt_size), rx_ring + rx_ring_offset, pkt_size); 803 skb_put_data(skb, rx_ring + rx_ring_offset, pkt_size);
804 } 804 }
805 805
806 skb->protocol = eth_type_trans(skb, dev); 806 skb->protocol = eth_type_trans(skb, dev);
diff --git a/drivers/net/fjes/fjes_main.c b/drivers/net/fjes/fjes_main.c
index b56e07fa44a8..750954be5a74 100644
--- a/drivers/net/fjes/fjes_main.c
+++ b/drivers/net/fjes/fjes_main.c
@@ -1156,8 +1156,7 @@ static int fjes_poll(struct napi_struct *napi, int budget)
1156 hw->ep_shm_info[cur_epid].net_stats 1156 hw->ep_shm_info[cur_epid].net_stats
1157 .rx_errors += 1; 1157 .rx_errors += 1;
1158 } else { 1158 } else {
1159 memcpy(skb_put(skb, frame_len), 1159 skb_put_data(skb, frame, frame_len);
1160 frame, frame_len);
1161 skb->protocol = eth_type_trans(skb, netdev); 1160 skb->protocol = eth_type_trans(skb, netdev);
1162 skb->ip_summed = CHECKSUM_UNNECESSARY; 1161 skb->ip_summed = CHECKSUM_UNNECESSARY;
1163 1162
diff --git a/drivers/net/hamradio/mkiss.c b/drivers/net/hamradio/mkiss.c
index 4a40a3d825b4..aec6c26563cf 100644
--- a/drivers/net/hamradio/mkiss.c
+++ b/drivers/net/hamradio/mkiss.c
@@ -298,7 +298,7 @@ static void ax_bump(struct mkiss *ax)
298 return; 298 return;
299 } 299 }
300 300
301 memcpy(skb_put(skb,count), ax->rbuff, count); 301 skb_put_data(skb, ax->rbuff, count);
302 skb->protocol = ax25_type_trans(skb, ax->dev); 302 skb->protocol = ax25_type_trans(skb, ax->dev);
303 netif_rx(skb); 303 netif_rx(skb);
304 ax->dev->stats.rx_packets++; 304 ax->dev->stats.rx_packets++;
diff --git a/drivers/net/hippi/rrunner.c b/drivers/net/hippi/rrunner.c
index 1ce6239a4849..7683fd544344 100644
--- a/drivers/net/hippi/rrunner.c
+++ b/drivers/net/hippi/rrunner.c
@@ -962,8 +962,8 @@ static void rx_int(struct net_device *dev, u32 rxlimit, u32 index)
962 pkt_len, 962 pkt_len,
963 PCI_DMA_FROMDEVICE); 963 PCI_DMA_FROMDEVICE);
964 964
965 memcpy(skb_put(skb, pkt_len), 965 skb_put_data(skb, rx_skb->data,
966 rx_skb->data, pkt_len); 966 pkt_len);
967 967
968 pci_dma_sync_single_for_device(rrpriv->pci_dev, 968 pci_dma_sync_single_for_device(rrpriv->pci_dev,
969 desc->addr.addrlo, 969 desc->addr.addrlo,
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index b65a97ecb78e..9a6c5864bc04 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -593,7 +593,7 @@ static struct sk_buff *netvsc_alloc_recv_skb(struct net_device *net,
593 * Copy to skb. This copy is needed here since the memory pointed by 593 * Copy to skb. This copy is needed here since the memory pointed by
594 * hv_netvsc_packet cannot be deallocated 594 * hv_netvsc_packet cannot be deallocated
595 */ 595 */
596 memcpy(skb_put(skb, buflen), data, buflen); 596 skb_put_data(skb, data, buflen);
597 597
598 skb->protocol = eth_type_trans(skb, net); 598 skb->protocol = eth_type_trans(skb, net);
599 599
diff --git a/drivers/net/ieee802154/at86rf230.c b/drivers/net/ieee802154/at86rf230.c
index 76ba7ecfe142..548d9d026a85 100644
--- a/drivers/net/ieee802154/at86rf230.c
+++ b/drivers/net/ieee802154/at86rf230.c
@@ -723,7 +723,7 @@ at86rf230_rx_read_frame_complete(void *context)
723 return; 723 return;
724 } 724 }
725 725
726 memcpy(skb_put(skb, len), buf + 2, len); 726 skb_put_data(skb, buf + 2, len);
727 ieee802154_rx_irqsafe(lp->hw, skb, lqi); 727 ieee802154_rx_irqsafe(lp->hw, skb, lqi);
728 kfree(ctx); 728 kfree(ctx);
729} 729}
diff --git a/drivers/net/ieee802154/ca8210.c b/drivers/net/ieee802154/ca8210.c
index 7a218549c80a..a626c539fb17 100644
--- a/drivers/net/ieee802154/ca8210.c
+++ b/drivers/net/ieee802154/ca8210.c
@@ -1875,7 +1875,7 @@ static int ca8210_skb_rx(
1875copy_payload: 1875copy_payload:
1876 /* Add <msdulen> bytes of space to the back of the buffer */ 1876 /* Add <msdulen> bytes of space to the back of the buffer */
1877 /* Copy msdu to skb */ 1877 /* Copy msdu to skb */
1878 memcpy(skb_put(skb, msdulen), &data_ind[29], msdulen); 1878 skb_put_data(skb, &data_ind[29], msdulen);
1879 1879
1880 ieee802154_rx_irqsafe(hw, skb, mpdulinkquality); 1880 ieee802154_rx_irqsafe(hw, skb, mpdulinkquality);
1881 return 0; 1881 return 0;
diff --git a/drivers/net/ieee802154/mrf24j40.c b/drivers/net/ieee802154/mrf24j40.c
index bd63289c55e8..7d334963dc08 100644
--- a/drivers/net/ieee802154/mrf24j40.c
+++ b/drivers/net/ieee802154/mrf24j40.c
@@ -774,7 +774,7 @@ static void mrf24j40_handle_rx_read_buf_complete(void *context)
774 return; 774 return;
775 } 775 }
776 776
777 memcpy(skb_put(skb, len), rx_local_buf, len); 777 skb_put_data(skb, rx_local_buf, len);
778 ieee802154_rx_irqsafe(devrec->hw, skb, 0); 778 ieee802154_rx_irqsafe(devrec->hw, skb, 0);
779 779
780#ifdef DEBUG 780#ifdef DEBUG
diff --git a/drivers/net/irda/smsc-ircc2.c b/drivers/net/irda/smsc-ircc2.c
index 23ed89ae5ddc..19a55cba6beb 100644
--- a/drivers/net/irda/smsc-ircc2.c
+++ b/drivers/net/irda/smsc-ircc2.c
@@ -1459,7 +1459,7 @@ static void smsc_ircc_dma_receive_complete(struct smsc_ircc_cb *self)
1459 /* Make sure IP header gets aligned */ 1459 /* Make sure IP header gets aligned */
1460 skb_reserve(skb, 1); 1460 skb_reserve(skb, 1);
1461 1461
1462 memcpy(skb_put(skb, len), self->rx_buff.data, len); 1462 skb_put_data(skb, self->rx_buff.data, len);
1463 self->netdev->stats.rx_packets++; 1463 self->netdev->stats.rx_packets++;
1464 self->netdev->stats.rx_bytes += len; 1464 self->netdev->stats.rx_bytes += len;
1465 1465
diff --git a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c
index 15b920086251..6638784c082e 100644
--- a/drivers/net/irda/vlsi_ir.c
+++ b/drivers/net/irda/vlsi_ir.c
@@ -578,7 +578,7 @@ static int vlsi_process_rx(struct vlsi_ring *r, struct ring_descr *rd)
578 skb = rd->skb; 578 skb = rd->skb;
579 rd->skb = NULL; 579 rd->skb = NULL;
580 skb->dev = ndev; 580 skb->dev = ndev;
581 memcpy(skb_put(skb,len), rd->buf, len); 581 skb_put_data(skb, rd->buf, len);
582 skb_reset_mac_header(skb); 582 skb_reset_mac_header(skb);
583 if (in_interrupt()) 583 if (in_interrupt())
584 netif_rx(skb); 584 netif_rx(skb);
diff --git a/drivers/net/ppp/ppp_async.c b/drivers/net/ppp/ppp_async.c
index feb9569e3345..32c72db654e2 100644
--- a/drivers/net/ppp/ppp_async.c
+++ b/drivers/net/ppp/ppp_async.c
@@ -894,8 +894,7 @@ ppp_async_input(struct asyncppp *ap, const unsigned char *buf,
894 /* packet overflowed MRU */ 894 /* packet overflowed MRU */
895 ap->state |= SC_TOSS; 895 ap->state |= SC_TOSS;
896 } else { 896 } else {
897 sp = skb_put(skb, n); 897 sp = skb_put_data(skb, buf, n);
898 memcpy(sp, buf, n);
899 if (ap->state & SC_ESCAPE) { 898 if (ap->state & SC_ESCAPE) {
900 sp[0] ^= PPP_TRANS; 899 sp[0] ^= PPP_TRANS;
901 ap->state &= ~SC_ESCAPE; 900 ap->state &= ~SC_ESCAPE;
diff --git a/drivers/net/ppp/ppp_synctty.c b/drivers/net/ppp/ppp_synctty.c
index 9ae53986cb4a..ce2300c0bcbf 100644
--- a/drivers/net/ppp/ppp_synctty.c
+++ b/drivers/net/ppp/ppp_synctty.c
@@ -697,8 +697,7 @@ ppp_sync_input(struct syncppp *ap, const unsigned char *buf,
697 goto err; 697 goto err;
698 } 698 }
699 699
700 p = skb_put(skb, count); 700 p = skb_put_data(skb, buf, count);
701 memcpy(p, buf, count);
702 701
703 /* strip address/control field if present */ 702 /* strip address/control field if present */
704 p = skb->data; 703 p = skb->data;
diff --git a/drivers/net/slip/slip.c b/drivers/net/slip/slip.c
index 74b907206aa7..436dd78c396a 100644
--- a/drivers/net/slip/slip.c
+++ b/drivers/net/slip/slip.c
@@ -364,7 +364,7 @@ static void sl_bump(struct slip *sl)
364 return; 364 return;
365 } 365 }
366 skb->dev = dev; 366 skb->dev = dev;
367 memcpy(skb_put(skb, count), sl->rbuff, count); 367 skb_put_data(skb, sl->rbuff, count);
368 skb_reset_mac_header(skb); 368 skb_reset_mac_header(skb);
369 skb->protocol = htons(ETH_P_IP); 369 skb->protocol = htons(ETH_P_IP);
370 netif_rx_ni(skb); 370 netif_rx_ni(skb);
diff --git a/drivers/net/usb/asix_common.c b/drivers/net/usb/asix_common.c
index 125cff57c759..90facc5ecab0 100644
--- a/drivers/net/usb/asix_common.c
+++ b/drivers/net/usb/asix_common.c
@@ -167,8 +167,8 @@ int asix_rx_fixup_internal(struct usbnet *dev, struct sk_buff *skb,
167 } 167 }
168 168
169 if (rx->ax_skb) { 169 if (rx->ax_skb) {
170 data = skb_put(rx->ax_skb, copy_length); 170 data = skb_put_data(rx->ax_skb, skb->data + offset,
171 memcpy(data, skb->data + offset, copy_length); 171 copy_length);
172 if (!rx->remaining) 172 if (!rx->remaining)
173 usbnet_skb_return(dev, rx->ax_skb); 173 usbnet_skb_return(dev, rx->ax_skb);
174 } 174 }
diff --git a/drivers/net/usb/cdc-phonet.c b/drivers/net/usb/cdc-phonet.c
index c7a350bbaaa7..2952cb570996 100644
--- a/drivers/net/usb/cdc-phonet.c
+++ b/drivers/net/usb/cdc-phonet.c
@@ -162,7 +162,7 @@ static void rx_complete(struct urb *req)
162 skb = pnd->rx_skb = netdev_alloc_skb(dev, 12); 162 skb = pnd->rx_skb = netdev_alloc_skb(dev, 12);
163 if (likely(skb)) { 163 if (likely(skb)) {
164 /* Can't use pskb_pull() on page in IRQ */ 164 /* Can't use pskb_pull() on page in IRQ */
165 memcpy(skb_put(skb, 1), page_address(page), 1); 165 skb_put_data(skb, page_address(page), 1);
166 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, 166 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
167 page, 1, req->actual_length, 167 page, 1, req->actual_length,
168 PAGE_SIZE); 168 PAGE_SIZE);
diff --git a/drivers/net/usb/cdc_mbim.c b/drivers/net/usb/cdc_mbim.c
index a6b997cffd3b..18fa45fc979b 100644
--- a/drivers/net/usb/cdc_mbim.c
+++ b/drivers/net/usb/cdc_mbim.c
@@ -399,7 +399,7 @@ static struct sk_buff *cdc_mbim_process_dgram(struct usbnet *dev, u8 *buf, size_
399 memcpy(eth_hdr(skb)->h_dest, dev->net->dev_addr, ETH_ALEN); 399 memcpy(eth_hdr(skb)->h_dest, dev->net->dev_addr, ETH_ALEN);
400 400
401 /* add datagram */ 401 /* add datagram */
402 memcpy(skb_put(skb, len), buf, len); 402 skb_put_data(skb, buf, len);
403 403
404 /* map MBIM session to VLAN */ 404 /* map MBIM session to VLAN */
405 if (tci) 405 if (tci)
diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
index 7f02954772c6..8a4c8a1b9dd3 100644
--- a/drivers/net/usb/cdc_ncm.c
+++ b/drivers/net/usb/cdc_ncm.c
@@ -1180,7 +1180,7 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev, struct sk_buff *skb, __le32 sign)
1180 ndp16->dpe16[index].wDatagramLength = cpu_to_le16(skb->len); 1180 ndp16->dpe16[index].wDatagramLength = cpu_to_le16(skb->len);
1181 ndp16->dpe16[index].wDatagramIndex = cpu_to_le16(skb_out->len); 1181 ndp16->dpe16[index].wDatagramIndex = cpu_to_le16(skb_out->len);
1182 ndp16->wLength = cpu_to_le16(ndplen + sizeof(struct usb_cdc_ncm_dpe16)); 1182 ndp16->wLength = cpu_to_le16(ndplen + sizeof(struct usb_cdc_ncm_dpe16));
1183 memcpy(skb_put(skb_out, skb->len), skb->data, skb->len); 1183 skb_put_data(skb_out, skb->data, skb->len);
1184 ctx->tx_curr_frame_payload += skb->len; /* count real tx payload data */ 1184 ctx->tx_curr_frame_payload += skb->len; /* count real tx payload data */
1185 dev_kfree_skb_any(skb); 1185 dev_kfree_skb_any(skb);
1186 skb = NULL; 1186 skb = NULL;
@@ -1229,7 +1229,7 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev, struct sk_buff *skb, __le32 sign)
1229 nth16 = (struct usb_cdc_ncm_nth16 *)skb_out->data; 1229 nth16 = (struct usb_cdc_ncm_nth16 *)skb_out->data;
1230 cdc_ncm_align_tail(skb_out, ctx->tx_ndp_modulus, 0, ctx->tx_max); 1230 cdc_ncm_align_tail(skb_out, ctx->tx_ndp_modulus, 0, ctx->tx_max);
1231 nth16->wNdpIndex = cpu_to_le16(skb_out->len); 1231 nth16->wNdpIndex = cpu_to_le16(skb_out->len);
1232 memcpy(skb_put(skb_out, ctx->max_ndp_size), ctx->delayed_ndp16, ctx->max_ndp_size); 1232 skb_put_data(skb_out, ctx->delayed_ndp16, ctx->max_ndp_size);
1233 1233
1234 /* Zero out delayed NDP - signature checking will naturally fail. */ 1234 /* Zero out delayed NDP - signature checking will naturally fail. */
1235 ndp16 = memset(ctx->delayed_ndp16, 0, ctx->max_ndp_size); 1235 ndp16 = memset(ctx->delayed_ndp16, 0, ctx->max_ndp_size);
@@ -1497,7 +1497,7 @@ next_ndp:
1497 skb = netdev_alloc_skb_ip_align(dev->net, len); 1497 skb = netdev_alloc_skb_ip_align(dev->net, len);
1498 if (!skb) 1498 if (!skb)
1499 goto error; 1499 goto error;
1500 memcpy(skb_put(skb, len), skb_in->data + offset, len); 1500 skb_put_data(skb, skb_in->data + offset, len);
1501 usbnet_skb_return(dev, skb); 1501 usbnet_skb_return(dev, skb);
1502 payload += len; /* count payload bytes in this NTB */ 1502 payload += len; /* count payload bytes in this NTB */
1503 } 1503 }
diff --git a/drivers/net/usb/gl620a.c b/drivers/net/usb/gl620a.c
index 1cc24e6f23e2..29276e54bb8b 100644
--- a/drivers/net/usb/gl620a.c
+++ b/drivers/net/usb/gl620a.c
@@ -121,8 +121,7 @@ static int genelink_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
121 if (gl_skb) { 121 if (gl_skb) {
122 122
123 // copy the packet data to the new skb 123 // copy the packet data to the new skb
124 memcpy(skb_put(gl_skb, size), 124 skb_put_data(gl_skb, packet->packet_data, size);
125 packet->packet_data, size);
126 usbnet_skb_return(dev, gl_skb); 125 usbnet_skb_return(dev, gl_skb);
127 } 126 }
128 127
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index 00067a0c51ca..908ada4ca21c 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -911,11 +911,9 @@ static void packetizeRx(struct hso_net *odev, unsigned char *ip_pkt,
911 911
912 /* Copy what we got so far. make room for iphdr 912 /* Copy what we got so far. make room for iphdr
913 * after tail. */ 913 * after tail. */
914 tmp_rx_buf = 914 tmp_rx_buf = skb_put_data(odev->skb_rx_buf,
915 skb_put(odev->skb_rx_buf, 915 (char *)&(odev->rx_ip_hdr),
916 sizeof(struct iphdr)); 916 sizeof(struct iphdr));
917 memcpy(tmp_rx_buf, (char *)&(odev->rx_ip_hdr),
918 sizeof(struct iphdr));
919 917
920 /* ETH_HLEN */ 918 /* ETH_HLEN */
921 odev->rx_buf_size = sizeof(struct iphdr); 919 odev->rx_buf_size = sizeof(struct iphdr);
@@ -934,8 +932,9 @@ static void packetizeRx(struct hso_net *odev, unsigned char *ip_pkt,
934 /* Copy the rest of the bytes that are left in the 932 /* Copy the rest of the bytes that are left in the
935 * buffer into the waiting sk_buf. */ 933 * buffer into the waiting sk_buf. */
936 /* Make room for temp_bytes after tail. */ 934 /* Make room for temp_bytes after tail. */
937 tmp_rx_buf = skb_put(odev->skb_rx_buf, temp_bytes); 935 tmp_rx_buf = skb_put_data(odev->skb_rx_buf,
938 memcpy(tmp_rx_buf, ip_pkt + buffer_offset, temp_bytes); 936 ip_pkt + buffer_offset,
937 temp_bytes);
939 938
940 odev->rx_buf_missing -= temp_bytes; 939 odev->rx_buf_missing -= temp_bytes;
941 count -= temp_bytes; 940 count -= temp_bytes;
diff --git a/drivers/net/usb/ipheth.c b/drivers/net/usb/ipheth.c
index 76465b117b72..0f213ea22c75 100644
--- a/drivers/net/usb/ipheth.c
+++ b/drivers/net/usb/ipheth.c
@@ -253,7 +253,7 @@ static void ipheth_rcvbulk_callback(struct urb *urb)
253 return; 253 return;
254 } 254 }
255 255
256 memcpy(skb_put(skb, len), buf, len); 256 skb_put_data(skb, buf, len);
257 skb->dev = dev->net; 257 skb->dev = dev->net;
258 skb->protocol = eth_type_trans(skb, dev->net); 258 skb->protocol = eth_type_trans(skb, dev->net);
259 259
diff --git a/drivers/net/usb/lg-vl600.c b/drivers/net/usb/lg-vl600.c
index 5714107533bb..d633492bf9eb 100644
--- a/drivers/net/usb/lg-vl600.c
+++ b/drivers/net/usb/lg-vl600.c
@@ -135,7 +135,7 @@ static int vl600_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
135 } 135 }
136 136
137 buf = s->current_rx_buf; 137 buf = s->current_rx_buf;
138 memcpy(skb_put(buf, skb->len), skb->data, skb->len); 138 skb_put_data(buf, skb->data, skb->len);
139 } else if (skb->len < 4) { 139 } else if (skb->len < 4) {
140 netif_err(dev, ifup, dev->net, "Frame too short\n"); 140 netif_err(dev, ifup, dev->net, "Frame too short\n");
141 dev->net->stats.rx_length_errors++; 141 dev->net->stats.rx_length_errors++;
diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
index 32a22f4e8356..ffd229ec8352 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -188,7 +188,7 @@ static int qmimux_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
188 goto skip; 188 goto skip;
189 } 189 }
190 190
191 memcpy(skb_put(skbn, len), skb->data + offset, len); 191 skb_put_data(skbn, skb->data + offset, len);
192 if (netif_rx(skbn) != NET_RX_SUCCESS) 192 if (netif_rx(skbn) != NET_RX_SUCCESS)
193 return 0; 193 return 0;
194 194
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 1f8c15cb63b0..6bacbd2f0eca 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -305,7 +305,7 @@ static struct sk_buff *page_to_skb(struct virtnet_info *vi,
305 copy = len; 305 copy = len;
306 if (copy > skb_tailroom(skb)) 306 if (copy > skb_tailroom(skb))
307 copy = skb_tailroom(skb); 307 copy = skb_tailroom(skb);
308 memcpy(skb_put(skb, copy), p, copy); 308 skb_put_data(skb, p, copy);
309 309
310 len -= copy; 310 len -= copy;
311 offset += copy; 311 offset += copy;
diff --git a/drivers/net/wan/farsync.c b/drivers/net/wan/farsync.c
index 33265eb50420..bd46b2552980 100644
--- a/drivers/net/wan/farsync.c
+++ b/drivers/net/wan/farsync.c
@@ -857,7 +857,7 @@ fst_rx_dma_complete(struct fst_card_info *card, struct fst_port_info *port,
857 857
858 dbg(DBG_TX, "fst_rx_dma_complete\n"); 858 dbg(DBG_TX, "fst_rx_dma_complete\n");
859 pi = port->index; 859 pi = port->index;
860 memcpy(skb_put(skb, len), card->rx_dma_handle_host, len); 860 skb_put_data(skb, card->rx_dma_handle_host, len);
861 861
862 /* Reset buffer descriptor */ 862 /* Reset buffer descriptor */
863 FST_WRB(card, rxDescrRing[pi][rxp].bits, DMA_OWN); 863 FST_WRB(card, rxDescrRing[pi][rxp].bits, DMA_OWN);
diff --git a/drivers/net/wan/hdlc_ppp.c b/drivers/net/wan/hdlc_ppp.c
index 47fdb87d3567..f5b4ad45831a 100644
--- a/drivers/net/wan/hdlc_ppp.c
+++ b/drivers/net/wan/hdlc_ppp.c
@@ -234,9 +234,9 @@ static void ppp_tx_cp(struct net_device *dev, u16 pid, u8 code,
234 cp->len = htons(sizeof(struct cp_header) + magic_len + len); 234 cp->len = htons(sizeof(struct cp_header) + magic_len + len);
235 235
236 if (magic_len) 236 if (magic_len)
237 memcpy(skb_put(skb, magic_len), &magic, magic_len); 237 skb_put_data(skb, &magic, magic_len);
238 if (len) 238 if (len)
239 memcpy(skb_put(skb, len), data, len); 239 skb_put_data(skb, data, len);
240 240
241#if DEBUG_CP 241#if DEBUG_CP
242 BUG_ON(code >= CP_CODES); 242 BUG_ON(code >= CP_CODES);
diff --git a/drivers/net/wan/x25_asy.c b/drivers/net/wan/x25_asy.c
index 878b05d06fc7..40ee80c03c94 100644
--- a/drivers/net/wan/x25_asy.c
+++ b/drivers/net/wan/x25_asy.c
@@ -202,7 +202,7 @@ static void x25_asy_bump(struct x25_asy *sl)
202 return; 202 return;
203 } 203 }
204 skb_push(skb, 1); /* LAPB internal control */ 204 skb_push(skb, 1); /* LAPB internal control */
205 memcpy(skb_put(skb, count), sl->rbuff, count); 205 skb_put_data(skb, sl->rbuff, count);
206 skb->protocol = x25_type_trans(skb, sl->dev); 206 skb->protocol = x25_type_trans(skb, sl->dev);
207 err = lapb_data_received(skb->dev, skb); 207 err = lapb_data_received(skb->dev, skb);
208 if (err != LAPB_OK) { 208 if (err != LAPB_OK) {
diff --git a/drivers/net/wimax/i2400m/netdev.c b/drivers/net/wimax/i2400m/netdev.c
index 7f64e74d746b..dd7f3168c07d 100644
--- a/drivers/net/wimax/i2400m/netdev.c
+++ b/drivers/net/wimax/i2400m/netdev.c
@@ -488,7 +488,7 @@ void i2400m_net_rx(struct i2400m *i2400m, struct sk_buff *skb_rx,
488 net_dev->stats.rx_dropped++; 488 net_dev->stats.rx_dropped++;
489 goto error_skb_realloc; 489 goto error_skb_realloc;
490 } 490 }
491 memcpy(skb_put(skb, buf_len), buf, buf_len); 491 skb_put_data(skb, buf, buf_len);
492 } 492 }
493 i2400m_rx_fake_eth_header(i2400m->wimax_dev.net_dev, 493 i2400m_rx_fake_eth_header(i2400m->wimax_dev.net_dev,
494 skb->data - ETH_HLEN, 494 skb->data - ETH_HLEN,
diff --git a/drivers/net/wireless/admtek/adm8211.c b/drivers/net/wireless/admtek/adm8211.c
index ed626f568b58..5f64f3928c35 100644
--- a/drivers/net/wireless/admtek/adm8211.c
+++ b/drivers/net/wireless/admtek/adm8211.c
@@ -390,9 +390,9 @@ static void adm8211_interrupt_rci(struct ieee80211_hw *dev)
390 priv->pdev, 390 priv->pdev,
391 priv->rx_buffers[entry].mapping, 391 priv->rx_buffers[entry].mapping,
392 pktlen, PCI_DMA_FROMDEVICE); 392 pktlen, PCI_DMA_FROMDEVICE);
393 memcpy(skb_put(skb, pktlen), 393 skb_put_data(skb,
394 skb_tail_pointer(priv->rx_buffers[entry].skb), 394 skb_tail_pointer(priv->rx_buffers[entry].skb),
395 pktlen); 395 pktlen);
396 pci_dma_sync_single_for_device( 396 pci_dma_sync_single_for_device(
397 priv->pdev, 397 priv->pdev,
398 priv->rx_buffers[entry].mapping, 398 priv->rx_buffers[entry].mapping,
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 4674ff33d320..16cf250f6c39 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -3475,9 +3475,8 @@ static void ath10k_tx_h_add_p2p_noa_ie(struct ath10k *ar,
3475 if (arvif->u.ap.noa_data) 3475 if (arvif->u.ap.noa_data)
3476 if (!pskb_expand_head(skb, 0, arvif->u.ap.noa_len, 3476 if (!pskb_expand_head(skb, 0, arvif->u.ap.noa_len,
3477 GFP_ATOMIC)) 3477 GFP_ATOMIC))
3478 memcpy(skb_put(skb, arvif->u.ap.noa_len), 3478 skb_put_data(skb, arvif->u.ap.noa_data,
3479 arvif->u.ap.noa_data, 3479 arvif->u.ap.noa_len);
3480 arvif->u.ap.noa_len);
3481 spin_unlock_bh(&ar->data_lock); 3480 spin_unlock_bh(&ar->data_lock);
3482 } 3481 }
3483} 3482}
diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 6afc8d27f0d5..a66e2482897f 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -3304,9 +3304,8 @@ static void ath10k_wmi_update_noa(struct ath10k *ar, struct ath10k_vif *arvif,
3304 3304
3305 if (arvif->u.ap.noa_data) 3305 if (arvif->u.ap.noa_data)
3306 if (!pskb_expand_head(bcn, 0, arvif->u.ap.noa_len, GFP_ATOMIC)) 3306 if (!pskb_expand_head(bcn, 0, arvif->u.ap.noa_len, GFP_ATOMIC))
3307 memcpy(skb_put(bcn, arvif->u.ap.noa_len), 3307 skb_put_data(bcn, arvif->u.ap.noa_data,
3308 arvif->u.ap.noa_data, 3308 arvif->u.ap.noa_len);
3309 arvif->u.ap.noa_len);
3310} 3309}
3311 3310
3312static int ath10k_wmi_op_pull_swba_ev(struct ath10k *ar, struct sk_buff *skb, 3311static int ath10k_wmi_op_pull_swba_ev(struct ath10k *ar, struct sk_buff *skb,
diff --git a/drivers/net/wireless/ath/ath9k/channel.c b/drivers/net/wireless/ath/ath9k/channel.c
index 373b1e9457fd..f0439f2d566b 100644
--- a/drivers/net/wireless/ath/ath9k/channel.c
+++ b/drivers/net/wireless/ath/ath9k/channel.c
@@ -1005,7 +1005,7 @@ static void ath_scan_send_probe(struct ath_softc *sc,
1005 info->flags |= IEEE80211_TX_CTL_NO_CCK_RATE; 1005 info->flags |= IEEE80211_TX_CTL_NO_CCK_RATE;
1006 1006
1007 if (req->ie_len) 1007 if (req->ie_len)
1008 memcpy(skb_put(skb, req->ie_len), req->ie, req->ie_len); 1008 skb_put_data(skb, req->ie, req->ie_len);
1009 1009
1010 skb_set_queue_mapping(skb, IEEE80211_AC_VO); 1010 skb_set_queue_mapping(skb, IEEE80211_AC_VO);
1011 1011
@@ -1521,8 +1521,7 @@ void ath9k_beacon_add_noa(struct ath_softc *sc, struct ath_vif *avp,
1521 noa_desc = !!avp->offchannel_duration + !!avp->noa_duration; 1521 noa_desc = !!avp->offchannel_duration + !!avp->noa_duration;
1522 noa_len = 2 + sizeof(struct ieee80211_p2p_noa_desc) * noa_desc; 1522 noa_len = 2 + sizeof(struct ieee80211_p2p_noa_desc) * noa_desc;
1523 1523
1524 hdr = skb_put(skb, sizeof(noa_ie_hdr)); 1524 hdr = skb_put_data(skb, noa_ie_hdr, sizeof(noa_ie_hdr));
1525 memcpy(hdr, noa_ie_hdr, sizeof(noa_ie_hdr));
1526 hdr[1] = sizeof(noa_ie_hdr) + noa_len - 2; 1525 hdr[1] = sizeof(noa_ie_hdr) + noa_len - 2;
1527 hdr[7] = noa_len; 1526 hdr[7] = noa_len;
1528 1527
diff --git a/drivers/net/wireless/ath/ath9k/wmi.c b/drivers/net/wireless/ath/ath9k/wmi.c
index 9c16e2a6d185..c51c69b1ad96 100644
--- a/drivers/net/wireless/ath/ath9k/wmi.c
+++ b/drivers/net/wireless/ath/ath9k/wmi.c
@@ -312,8 +312,7 @@ int ath9k_wmi_cmd(struct wmi *wmi, enum wmi_cmd_id cmd_id,
312 skb_reserve(skb, headroom); 312 skb_reserve(skb, headroom);
313 313
314 if (cmd_len != 0 && cmd_buf != NULL) { 314 if (cmd_len != 0 && cmd_buf != NULL) {
315 data = (u8 *) skb_put(skb, cmd_len); 315 data = skb_put_data(skb, cmd_buf, cmd_len);
316 memcpy(data, cmd_buf, cmd_len);
317 } 316 }
318 317
319 mutex_lock(&wmi->op_mutex); 318 mutex_lock(&wmi->op_mutex);
diff --git a/drivers/net/wireless/ath/carl9170/rx.c b/drivers/net/wireless/ath/carl9170/rx.c
index b2166726b05d..705063259c8f 100644
--- a/drivers/net/wireless/ath/carl9170/rx.c
+++ b/drivers/net/wireless/ath/carl9170/rx.c
@@ -481,7 +481,7 @@ static struct sk_buff *carl9170_rx_copy_data(u8 *buf, int len)
481 skb = dev_alloc_skb(len + reserved); 481 skb = dev_alloc_skb(len + reserved);
482 if (likely(skb)) { 482 if (likely(skb)) {
483 skb_reserve(skb, reserved); 483 skb_reserve(skb, reserved);
484 memcpy(skb_put(skb, len), buf, len); 484 skb_put_data(skb, buf, len);
485 } 485 }
486 486
487 return skb; 487 return skb;
@@ -916,7 +916,7 @@ static void carl9170_rx_stream(struct ar9170 *ar, void *buf, unsigned int len)
916 } 916 }
917 } 917 }
918 918
919 memcpy(skb_put(ar->rx_failover, tlen), tbuf, tlen); 919 skb_put_data(ar->rx_failover, tbuf, tlen);
920 ar->rx_failover_missing -= tlen; 920 ar->rx_failover_missing -= tlen;
921 921
922 if (ar->rx_failover_missing <= 0) { 922 if (ar->rx_failover_missing <= 0) {
@@ -958,7 +958,7 @@ static void carl9170_rx_stream(struct ar9170 *ar, void *buf, unsigned int len)
958 * the rx - descriptor comes round again. 958 * the rx - descriptor comes round again.
959 */ 959 */
960 960
961 memcpy(skb_put(ar->rx_failover, tlen), tbuf, tlen); 961 skb_put_data(ar->rx_failover, tbuf, tlen);
962 ar->rx_failover_missing = clen - tlen; 962 ar->rx_failover_missing = clen - tlen;
963 return; 963 return;
964 } 964 }
diff --git a/drivers/net/wireless/ath/wil6210/wmi.c b/drivers/net/wireless/ath/wil6210/wmi.c
index 814c35645b73..cff9c585972f 100644
--- a/drivers/net/wireless/ath/wil6210/wmi.c
+++ b/drivers/net/wireless/ath/wil6210/wmi.c
@@ -681,7 +681,7 @@ static void wmi_evt_eapol_rx(struct wil6210_priv *wil, int id,
681 ether_addr_copy(eth->h_dest, ndev->dev_addr); 681 ether_addr_copy(eth->h_dest, ndev->dev_addr);
682 ether_addr_copy(eth->h_source, evt->src_mac); 682 ether_addr_copy(eth->h_source, evt->src_mac);
683 eth->h_proto = cpu_to_be16(ETH_P_PAE); 683 eth->h_proto = cpu_to_be16(ETH_P_PAE);
684 memcpy(skb_put(skb, eapol_len), evt->eapol, eapol_len); 684 skb_put_data(skb, evt->eapol, eapol_len);
685 skb->protocol = eth_type_trans(skb, ndev); 685 skb->protocol = eth_type_trans(skb, ndev);
686 if (likely(netif_rx_ni(skb) == NET_RX_SUCCESS)) { 686 if (likely(netif_rx_ni(skb) == NET_RX_SUCCESS)) {
687 ndev->stats.rx_packets++; 687 ndev->stats.rx_packets++;
diff --git a/drivers/net/wireless/atmel/atmel.c b/drivers/net/wireless/atmel/atmel.c
index 27b110dc8cc6..b68436b23a63 100644
--- a/drivers/net/wireless/atmel/atmel.c
+++ b/drivers/net/wireless/atmel/atmel.c
@@ -1036,9 +1036,8 @@ static void frag_rx_path(struct atmel_private *priv,
1036 priv->dev->stats.rx_dropped++; 1036 priv->dev->stats.rx_dropped++;
1037 } else { 1037 } else {
1038 skb_reserve(skb, 2); 1038 skb_reserve(skb, 2);
1039 memcpy(skb_put(skb, priv->frag_len + 12), 1039 skb_put_data(skb, priv->rx_buf,
1040 priv->rx_buf, 1040 priv->frag_len + 12);
1041 priv->frag_len + 12);
1042 skb->protocol = eth_type_trans(skb, priv->dev); 1041 skb->protocol = eth_type_trans(skb, priv->dev);
1043 skb->ip_summed = CHECKSUM_NONE; 1042 skb->ip_summed = CHECKSUM_NONE;
1044 netif_rx(skb); 1043 netif_rx(skb);
diff --git a/drivers/net/wireless/broadcom/b43legacy/dma.c b/drivers/net/wireless/broadcom/b43legacy/dma.c
index f9dd892b9f27..cfa617ddb2f1 100644
--- a/drivers/net/wireless/broadcom/b43legacy/dma.c
+++ b/drivers/net/wireless/broadcom/b43legacy/dma.c
@@ -1072,7 +1072,7 @@ static int dma_tx_fragment(struct b43legacy_dmaring *ring,
1072 goto out_unmap_hdr; 1072 goto out_unmap_hdr;
1073 } 1073 }
1074 1074
1075 memcpy(skb_put(bounce_skb, skb->len), skb->data, skb->len); 1075 skb_put_data(bounce_skb, skb->data, skb->len);
1076 memcpy(bounce_skb->cb, skb->cb, sizeof(skb->cb)); 1076 memcpy(bounce_skb->cb, skb->cb, sizeof(skb->cb));
1077 bounce_skb->dev = skb->dev; 1077 bounce_skb->dev = skb->dev;
1078 skb_set_queue_mapping(bounce_skb, skb_get_queue_mapping(skb)); 1078 skb_set_queue_mapping(bounce_skb, skb_get_queue_mapping(skb));
diff --git a/drivers/net/wireless/intel/ipw2x00/ipw2200.c b/drivers/net/wireless/intel/ipw2x00/ipw2200.c
index bbc579b647b6..e0c690b48d4e 100644
--- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c
+++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c
@@ -10274,8 +10274,9 @@ static int ipw_tx_skb(struct ipw_priv *priv, struct libipw_txb *txb,
10274 10274
10275 printk(KERN_INFO "Adding frag %d %d...\n", 10275 printk(KERN_INFO "Adding frag %d %d...\n",
10276 j, size); 10276 j, size);
10277 memcpy(skb_put(skb, size), 10277 skb_put_data(skb,
10278 txb->fragments[j]->data + hdr_len, size); 10278 txb->fragments[j]->data + hdr_len,
10279 size);
10279 } 10280 }
10280 dev_kfree_skb_any(txb->fragments[i]); 10281 dev_kfree_skb_any(txb->fragments[i]);
10281 txb->fragments[i] = skb; 10282 txb->fragments[i] = skb;
diff --git a/drivers/net/wireless/intel/ipw2x00/libipw_tx.c b/drivers/net/wireless/intel/ipw2x00/libipw_tx.c
index 048f1e3ada11..5339d1eeb2f7 100644
--- a/drivers/net/wireless/intel/ipw2x00/libipw_tx.c
+++ b/drivers/net/wireless/intel/ipw2x00/libipw_tx.c
@@ -359,7 +359,7 @@ netdev_tx_t libipw_xmit(struct sk_buff *skb, struct net_device *dev)
359 goto failed; 359 goto failed;
360 360
361 skb_reserve(skb_new, crypt->ops->extra_msdu_prefix_len); 361 skb_reserve(skb_new, crypt->ops->extra_msdu_prefix_len);
362 memcpy(skb_put(skb_new, hdr_len), &header, hdr_len); 362 skb_put_data(skb_new, &header, hdr_len);
363 snapped = 1; 363 snapped = 1;
364 libipw_copy_snap(skb_put(skb_new, SNAP_SIZE + sizeof(u16)), 364 libipw_copy_snap(skb_put(skb_new, SNAP_SIZE + sizeof(u16)),
365 ether_type); 365 ether_type);
@@ -470,9 +470,7 @@ netdev_tx_t libipw_xmit(struct sk_buff *skb, struct net_device *dev)
470 skb_reserve(skb_frag, 470 skb_reserve(skb_frag,
471 crypt->ops->extra_mpdu_prefix_len); 471 crypt->ops->extra_mpdu_prefix_len);
472 472
473 frag_hdr = 473 frag_hdr = skb_put_data(skb_frag, &header, hdr_len);
474 (struct libipw_hdr_3addrqos *)skb_put(skb_frag, hdr_len);
475 memcpy(frag_hdr, &header, hdr_len);
476 474
477 /* If this is not the last fragment, then add the MOREFRAGS 475 /* If this is not the last fragment, then add the MOREFRAGS
478 * bit to the frame control */ 476 * bit to the frame control */
diff --git a/drivers/net/wireless/intel/iwlegacy/3945.c b/drivers/net/wireless/intel/iwlegacy/3945.c
index 080ea8155b90..dbf164d48ed3 100644
--- a/drivers/net/wireless/intel/iwlegacy/3945.c
+++ b/drivers/net/wireless/intel/iwlegacy/3945.c
@@ -520,7 +520,7 @@ il3945_pass_packet_to_mac80211(struct il_priv *il, struct il_rx_buf *rxb,
520 * and do not consume a full page 520 * and do not consume a full page
521 */ 521 */
522 if (len <= SMALL_PACKET_SIZE) { 522 if (len <= SMALL_PACKET_SIZE) {
523 memcpy(skb_put(skb, len), rx_hdr->payload, len); 523 skb_put_data(skb, rx_hdr->payload, len);
524 } else { 524 } else {
525 skb_add_rx_frag(skb, 0, rxb->page, 525 skb_add_rx_frag(skb, 0, rxb->page,
526 (void *)rx_hdr->payload - (void *)pkt, len, 526 (void *)rx_hdr->payload - (void *)pkt, len,
diff --git a/drivers/net/wireless/intel/iwlegacy/4965-mac.c b/drivers/net/wireless/intel/iwlegacy/4965-mac.c
index 49a2ff15ddae..5b51fba75595 100644
--- a/drivers/net/wireless/intel/iwlegacy/4965-mac.c
+++ b/drivers/net/wireless/intel/iwlegacy/4965-mac.c
@@ -606,7 +606,7 @@ il4965_pass_packet_to_mac80211(struct il_priv *il, struct ieee80211_hdr *hdr,
606 } 606 }
607 607
608 if (len <= SMALL_PACKET_SIZE) { 608 if (len <= SMALL_PACKET_SIZE) {
609 memcpy(skb_put(skb, len), hdr, len); 609 skb_put_data(skb, hdr, len);
610 } else { 610 } else {
611 skb_add_rx_frag(skb, 0, rxb->page, (void *)hdr - rxb_addr(rxb), 611 skb_add_rx_frag(skb, 0, rxb->page, (void *)hdr - rxb_addr(rxb),
612 len, PAGE_SIZE << il->hw_params.rx_page_order); 612 len, PAGE_SIZE << il->hw_params.rx_page_order);
diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/rx.c b/drivers/net/wireless/intel/iwlwifi/dvm/rx.c
index adfd6307edca..eaad7389b67c 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/rx.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/rx.c
@@ -657,7 +657,7 @@ static void iwlagn_pass_packet_to_mac80211(struct iwl_priv *priv,
657 */ 657 */
658 hdrlen = (len <= skb_tailroom(skb)) ? len : sizeof(*hdr); 658 hdrlen = (len <= skb_tailroom(skb)) ? len : sizeof(*hdr);
659 659
660 memcpy(skb_put(skb, hdrlen), hdr, hdrlen); 660 skb_put_data(skb, hdr, hdrlen);
661 fraglen = len - hdrlen; 661 fraglen = len - hdrlen;
662 662
663 if (fraglen) { 663 if (fraglen) {
diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/tx.c b/drivers/net/wireless/intel/iwlwifi/dvm/tx.c
index 4b97371c3b42..adaa2f0097cc 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/tx.c
@@ -319,8 +319,7 @@ int iwlagn_tx_skb(struct iwl_priv *priv,
319 if (noa_data && 319 if (noa_data &&
320 pskb_expand_head(skb, 0, noa_data->length, 320 pskb_expand_head(skb, 0, noa_data->length,
321 GFP_ATOMIC) == 0) { 321 GFP_ATOMIC) == 0) {
322 memcpy(skb_put(skb, noa_data->length), 322 skb_put_data(skb, noa_data->data, noa_data->length);
323 noa_data->data, noa_data->length);
324 hdr = (struct ieee80211_hdr *)skb->data; 323 hdr = (struct ieee80211_hdr *)skb->data;
325 } 324 }
326 } 325 }
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/d3.c b/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
index 119a3bd92c50..7a56a0ac151c 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/d3.c
@@ -1431,7 +1431,7 @@ static void iwl_mvm_report_wakeup_reasons(struct iwl_mvm *mvm,
1431 if (!pkt) 1431 if (!pkt)
1432 goto report; 1432 goto report;
1433 1433
1434 memcpy(skb_put(pkt, hdrlen), pktdata, hdrlen); 1434 skb_put_data(pkt, pktdata, hdrlen);
1435 pktdata += hdrlen; 1435 pktdata += hdrlen;
1436 pktsize -= hdrlen; 1436 pktsize -= hdrlen;
1437 1437
@@ -1463,7 +1463,7 @@ static void iwl_mvm_report_wakeup_reasons(struct iwl_mvm *mvm,
1463 pktsize -= ivlen + icvlen; 1463 pktsize -= ivlen + icvlen;
1464 pktdata += ivlen; 1464 pktdata += ivlen;
1465 1465
1466 memcpy(skb_put(pkt, pktsize), pktdata, pktsize); 1466 skb_put_data(pkt, pktdata, pktsize);
1467 1467
1468 if (ieee80211_data_to_8023(pkt, vif->addr, vif->type)) 1468 if (ieee80211_data_to_8023(pkt, vif->addr, vif->type))
1469 goto report; 1469 goto report;
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
index fd2fc46e2fe5..15d13017c1df 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
@@ -1596,7 +1596,7 @@ void iwl_mvm_rx_stored_beacon_notif(struct iwl_mvm *mvm,
1596 rx_status.band); 1596 rx_status.band);
1597 1597
1598 /* copy the data */ 1598 /* copy the data */
1599 memcpy(skb_put(skb, size), sb->data, size); 1599 skb_put_data(skb, sb->data, size);
1600 memcpy(IEEE80211_SKB_RXCB(skb), &rx_status, sizeof(rx_status)); 1600 memcpy(IEEE80211_SKB_RXCB(skb), &rx_status, sizeof(rx_status));
1601 1601
1602 /* pass it as regular rx to mac80211 */ 1602 /* pass it as regular rx to mac80211 */
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rx.c b/drivers/net/wireless/intel/iwlwifi/mvm/rx.c
index fd1dd06c4f18..2c07719aa45c 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rx.c
@@ -133,7 +133,7 @@ static void iwl_mvm_pass_packet_to_mac80211(struct iwl_mvm *mvm,
133 */ 133 */
134 hdrlen = (len <= skb_tailroom(skb)) ? len : hdrlen + crypt_len + 8; 134 hdrlen = (len <= skb_tailroom(skb)) ? len : hdrlen + crypt_len + 8;
135 135
136 memcpy(skb_put(skb, hdrlen), hdr, hdrlen); 136 skb_put_data(skb, hdr, hdrlen);
137 fraglen = len - hdrlen; 137 fraglen = len - hdrlen;
138 138
139 if (fraglen) { 139 if (fraglen) {
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
index 966cd7543629..cf48390f6f68 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
@@ -183,9 +183,8 @@ static void iwl_mvm_create_skb(struct sk_buff *skb, struct ieee80211_hdr *hdr,
183 * present before copying packet data. 183 * present before copying packet data.
184 */ 184 */
185 hdrlen += crypt_len; 185 hdrlen += crypt_len;
186 memcpy(skb_put(skb, hdrlen), hdr, hdrlen); 186 skb_put_data(skb, hdr, hdrlen);
187 memcpy(skb_put(skb, headlen - hdrlen), (u8 *)hdr + hdrlen + pad_len, 187 skb_put_data(skb, (u8 *)hdr + hdrlen + pad_len, headlen - hdrlen);
188 headlen - hdrlen);
189 188
190 fraglen = len - headlen; 189 fraglen = len - headlen;
191 190
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
index 386950a2d616..01013d273aa7 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
@@ -2141,8 +2141,7 @@ static int iwl_fill_data_tbs_amsdu(struct iwl_trans *trans, struct sk_buff *skb,
2141 htons(ETH_P_IPV6), 2141 htons(ETH_P_IPV6),
2142 data_left); 2142 data_left);
2143 2143
2144 memcpy(skb_put(csum_skb, tcp_hdrlen(skb)), 2144 skb_put_data(csum_skb, tcph, tcp_hdrlen(skb));
2145 tcph, tcp_hdrlen(skb));
2146 skb_reset_transport_header(csum_skb); 2145 skb_reset_transport_header(csum_skb);
2147 csum_skb->csum_start = 2146 csum_skb->csum_start =
2148 (unsigned char *)tcp_hdr(csum_skb) - 2147 (unsigned char *)tcp_hdr(csum_skb) -
@@ -2176,7 +2175,7 @@ static int iwl_fill_data_tbs_amsdu(struct iwl_trans *trans, struct sk_buff *skb,
2176 dma_addr_t tb_phys; 2175 dma_addr_t tb_phys;
2177 2176
2178 if (trans_pcie->sw_csum_tx) 2177 if (trans_pcie->sw_csum_tx)
2179 memcpy(skb_put(csum_skb, size), tso.data, size); 2178 skb_put_data(csum_skb, tso.data, size);
2180 2179
2181 tb_phys = dma_map_single(trans->dev, tso.data, 2180 tb_phys = dma_map_single(trans->dev, tso.data,
2182 size, DMA_TO_DEVICE); 2181 size, DMA_TO_DEVICE);
diff --git a/drivers/net/wireless/intersil/hostap/hostap_80211_tx.c b/drivers/net/wireless/intersil/hostap/hostap_80211_tx.c
index 055e11d353ca..c1b10d5117ad 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_80211_tx.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_80211_tx.c
@@ -242,7 +242,7 @@ netdev_tx_t hostap_data_start_xmit(struct sk_buff *skb,
242 memcpy(skb_push(skb, encaps_len), encaps_data, encaps_len); 242 memcpy(skb_push(skb, encaps_len), encaps_data, encaps_len);
243 memcpy(skb_push(skb, hdr_len), &hdr, hdr_len); 243 memcpy(skb_push(skb, hdr_len), &hdr, hdr_len);
244 if (use_wds == WDS_OWN_FRAME) { 244 if (use_wds == WDS_OWN_FRAME) {
245 memcpy(skb_put(skb, ETH_ALEN), &hdr.addr4, ETH_ALEN); 245 skb_put_data(skb, &hdr.addr4, ETH_ALEN);
246 } 246 }
247 247
248 iface->stats.tx_packets++; 248 iface->stats.tx_packets++;
diff --git a/drivers/net/wireless/intersil/hostap/hostap_ap.c b/drivers/net/wireless/intersil/hostap/hostap_ap.c
index 89b5987303a4..91757defb9be 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_ap.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_ap.c
@@ -1000,7 +1000,7 @@ static void prism2_send_mgmt(struct net_device *dev,
1000 hdrlen = hostap_80211_get_hdrlen(cpu_to_le16(type_subtype)); 1000 hdrlen = hostap_80211_get_hdrlen(cpu_to_le16(type_subtype));
1001 hdr = skb_put_zero(skb, hdrlen); 1001 hdr = skb_put_zero(skb, hdrlen);
1002 if (body) 1002 if (body)
1003 memcpy(skb_put(skb, body_len), body, body_len); 1003 skb_put_data(skb, body, body_len);
1004 1004
1005 /* FIX: ctrl::ack sending used special HFA384X_TX_CTRL_802_11 1005 /* FIX: ctrl::ack sending used special HFA384X_TX_CTRL_802_11
1006 * tx_control instead of using local->tx_control */ 1006 * tx_control instead of using local->tx_control */
diff --git a/drivers/net/wireless/intersil/hostap/hostap_hw.c b/drivers/net/wireless/intersil/hostap/hostap_hw.c
index d4f0b730796e..72b46eaf3de2 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_hw.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_hw.c
@@ -2005,7 +2005,7 @@ static void prism2_rx(local_info_t *local)
2005 goto rx_dropped; 2005 goto rx_dropped;
2006 } 2006 }
2007 skb->dev = dev; 2007 skb->dev = dev;
2008 memcpy(skb_put(skb, hdr_len), &rxdesc, hdr_len); 2008 skb_put_data(skb, &rxdesc, hdr_len);
2009 2009
2010 if (len > 0) 2010 if (len > 0)
2011 res = hfa384x_from_bap(dev, BAP0, skb_put(skb, len), len); 2011 res = hfa384x_from_bap(dev, BAP0, skb_put(skb, len), len);
@@ -2209,9 +2209,9 @@ static void hostap_tx_callback(local_info_t *local,
2209 return; 2209 return;
2210 } 2210 }
2211 2211
2212 memcpy(skb_put(skb, hdrlen), (void *) &txdesc->frame_control, hdrlen); 2212 skb_put_data(skb, (void *)&txdesc->frame_control, hdrlen);
2213 if (payload) 2213 if (payload)
2214 memcpy(skb_put(skb, len), payload, len); 2214 skb_put_data(skb, payload, len);
2215 2215
2216 skb->dev = local->dev; 2216 skb->dev = local->dev;
2217 skb_reset_mac_header(skb); 2217 skb_reset_mac_header(skb);
@@ -2362,8 +2362,7 @@ static void prism2_txexc(local_info_t *local)
2362 struct sk_buff *skb; 2362 struct sk_buff *skb;
2363 skb = dev_alloc_skb(sizeof(txdesc)); 2363 skb = dev_alloc_skb(sizeof(txdesc));
2364 if (skb) { 2364 if (skb) {
2365 memcpy(skb_put(skb, sizeof(txdesc)), &txdesc, 2365 skb_put_data(skb, &txdesc, sizeof(txdesc));
2366 sizeof(txdesc));
2367 skb_queue_tail(&local->sta_tx_exc_list, skb); 2366 skb_queue_tail(&local->sta_tx_exc_list, skb);
2368 tasklet_schedule(&local->sta_tx_exc_tasklet); 2367 tasklet_schedule(&local->sta_tx_exc_tasklet);
2369 } 2368 }
@@ -2460,7 +2459,7 @@ static void prism2_info(local_info_t *local)
2460 goto out; 2459 goto out;
2461 } 2460 }
2462 2461
2463 memcpy(skb_put(skb, sizeof(info)), &info, sizeof(info)); 2462 skb_put_data(skb, &info, sizeof(info));
2464 if (left > 0 && hfa384x_from_bap(dev, BAP0, skb_put(skb, left), left)) 2463 if (left > 0 && hfa384x_from_bap(dev, BAP0, skb_put(skb, left), left))
2465 { 2464 {
2466 spin_unlock(&local->baplock); 2465 spin_unlock(&local->baplock);
diff --git a/drivers/net/wireless/intersil/hostap/hostap_main.c b/drivers/net/wireless/intersil/hostap/hostap_main.c
index 400f9b5d620e..a3c066f90afc 100644
--- a/drivers/net/wireless/intersil/hostap/hostap_main.c
+++ b/drivers/net/wireless/intersil/hostap/hostap_main.c
@@ -1045,7 +1045,7 @@ int prism2_sta_send_mgmt(local_info_t *local, u8 *dst, u16 stype,
1045 memcpy(mgmt->sa, dev->dev_addr, ETH_ALEN); 1045 memcpy(mgmt->sa, dev->dev_addr, ETH_ALEN);
1046 memcpy(mgmt->bssid, dst, ETH_ALEN); 1046 memcpy(mgmt->bssid, dst, ETH_ALEN);
1047 if (body) 1047 if (body)
1048 memcpy(skb_put(skb, bodylen), body, bodylen); 1048 skb_put_data(skb, body, bodylen);
1049 1049
1050 meta = (struct hostap_skb_tx_data *) skb->cb; 1050 meta = (struct hostap_skb_tx_data *) skb->cb;
1051 memset(meta, 0, sizeof(*meta)); 1051 memset(meta, 0, sizeof(*meta));
diff --git a/drivers/net/wireless/intersil/orinoco/main.c b/drivers/net/wireless/intersil/orinoco/main.c
index d9128bb25e85..f7abc439fb92 100644
--- a/drivers/net/wireless/intersil/orinoco/main.c
+++ b/drivers/net/wireless/intersil/orinoco/main.c
@@ -792,7 +792,7 @@ static void orinoco_rx_monitor(struct net_device *dev, u16 rxfid,
792 } 792 }
793 793
794 /* Copy the 802.11 header to the skb */ 794 /* Copy the 802.11 header to the skb */
795 memcpy(skb_put(skb, hdrlen), &(desc->frame_ctl), hdrlen); 795 skb_put_data(skb, &(desc->frame_ctl), hdrlen);
796 skb_reset_mac_header(skb); 796 skb_reset_mac_header(skb);
797 797
798 /* If any, copy the data from the card to the skb */ 798 /* If any, copy the data from the card to the skb */
diff --git a/drivers/net/wireless/intersil/p54/p54spi.c b/drivers/net/wireless/intersil/p54/p54spi.c
index 7ab2f43ab425..e41bf042352e 100644
--- a/drivers/net/wireless/intersil/p54/p54spi.c
+++ b/drivers/net/wireless/intersil/p54/p54spi.c
@@ -372,9 +372,9 @@ static int p54spi_rx(struct p54s_priv *priv)
372 } 372 }
373 373
374 if (len <= READAHEAD_SZ) { 374 if (len <= READAHEAD_SZ) {
375 memcpy(skb_put(skb, len), rx_head + 1, len); 375 skb_put_data(skb, rx_head + 1, len);
376 } else { 376 } else {
377 memcpy(skb_put(skb, READAHEAD_SZ), rx_head + 1, READAHEAD_SZ); 377 skb_put_data(skb, rx_head + 1, READAHEAD_SZ);
378 p54spi_spi_read(priv, SPI_ADRS_DMA_DATA, 378 p54spi_spi_read(priv, SPI_ADRS_DMA_DATA,
379 skb_put(skb, len - READAHEAD_SZ), 379 skb_put(skb, len - READAHEAD_SZ),
380 len - READAHEAD_SZ); 380 len - READAHEAD_SZ);
diff --git a/drivers/net/wireless/intersil/p54/txrx.c b/drivers/net/wireless/intersil/p54/txrx.c
index 60f9b678ef74..b00c07d72f95 100644
--- a/drivers/net/wireless/intersil/p54/txrx.c
+++ b/drivers/net/wireless/intersil/p54/txrx.c
@@ -905,8 +905,9 @@ void p54_tx_80211(struct ieee80211_hw *dev,
905 if (info->control.hw_key->cipher == WLAN_CIPHER_SUITE_TKIP) { 905 if (info->control.hw_key->cipher == WLAN_CIPHER_SUITE_TKIP) {
906 /* reserve space for the MIC key */ 906 /* reserve space for the MIC key */
907 len += 8; 907 len += 8;
908 memcpy(skb_put(skb, 8), &(info->control.hw_key->key 908 skb_put_data(skb,
909 [NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY]), 8); 909 &(info->control.hw_key->key[NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY]),
910 8);
910 } 911 }
911 /* reserve some space for ICV */ 912 /* reserve some space for ICV */
912 len += info->control.hw_key->icv_len; 913 len += info->control.hw_key->icv_len;
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index c854a557998b..1d6e180052b8 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -2020,8 +2020,7 @@ static void hw_scan_work(struct work_struct *work)
2020 memcpy(mgmt->bssid, req->bssid, ETH_ALEN); 2020 memcpy(mgmt->bssid, req->bssid, ETH_ALEN);
2021 2021
2022 if (req->ie_len) 2022 if (req->ie_len)
2023 memcpy(skb_put(probe, req->ie_len), req->ie, 2023 skb_put_data(probe, req->ie, req->ie_len);
2024 req->ie_len);
2025 2024
2026 local_bh_disable(); 2025 local_bh_disable();
2027 mac80211_hwsim_tx_frame(hwsim->hw, probe, 2026 mac80211_hwsim_tx_frame(hwsim->hw, probe,
@@ -3021,7 +3020,7 @@ static int hwsim_cloned_frame_received_nl(struct sk_buff *skb_2,
3021 goto err; 3020 goto err;
3022 3021
3023 /* Copy the data */ 3022 /* Copy the data */
3024 memcpy(skb_put(skb, frame_data_len), frame_data, frame_data_len); 3023 skb_put_data(skb, frame_data, frame_data_len);
3025 3024
3026 data2 = get_hwsim_data_ref_from_addr(dst); 3025 data2 = get_hwsim_data_ref_from_addr(dst);
3027 if (!data2) 3026 if (!data2)
diff --git a/drivers/net/wireless/marvell/libertas/if_sdio.c b/drivers/net/wireless/marvell/libertas/if_sdio.c
index e0196208ab0d..a9e2b06b3175 100644
--- a/drivers/net/wireless/marvell/libertas/if_sdio.c
+++ b/drivers/net/wireless/marvell/libertas/if_sdio.c
@@ -256,9 +256,7 @@ static int if_sdio_handle_data(struct if_sdio_card *card,
256 256
257 skb_reserve(skb, NET_IP_ALIGN); 257 skb_reserve(skb, NET_IP_ALIGN);
258 258
259 data = skb_put(skb, size); 259 data = skb_put_data(skb, buffer, size);
260
261 memcpy(data, buffer, size);
262 260
263 lbs_process_rxed_packet(card->priv, skb); 261 lbs_process_rxed_packet(card->priv, skb);
264 262
diff --git a/drivers/net/wireless/marvell/mwifiex/11n_aggr.c b/drivers/net/wireless/marvell/mwifiex/11n_aggr.c
index 53e67526f40d..bc12c37e7501 100644
--- a/drivers/net/wireless/marvell/mwifiex/11n_aggr.c
+++ b/drivers/net/wireless/marvell/mwifiex/11n_aggr.c
@@ -81,7 +81,7 @@ mwifiex_11n_form_amsdu_pkt(struct sk_buff *skb_aggr,
81 tx_header->eth803_hdr.h_proto = htons(skb_src->len + LLC_SNAP_LEN); 81 tx_header->eth803_hdr.h_proto = htons(skb_src->len + LLC_SNAP_LEN);
82 82
83 /* Add payload */ 83 /* Add payload */
84 memcpy(skb_put(skb_aggr, skb_src->len), skb_src->data, skb_src->len); 84 skb_put_data(skb_aggr, skb_src->data, skb_src->len);
85 85
86 /* Add padding for new MSDU to start from 4 byte boundary */ 86 /* Add padding for new MSDU to start from 4 byte boundary */
87 *pad = (4 - ((unsigned long)skb_aggr->tail & 0x3)) % 4; 87 *pad = (4 - ((unsigned long)skb_aggr->tail & 0x3)) % 4;
diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
index 025bc06a19d6..c20e4944ef87 100644
--- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
@@ -176,12 +176,10 @@ mwifiex_form_mgmt_frame(struct sk_buff *skb, const u8 *buf, size_t len)
176 memcpy(skb_push(skb, sizeof(pkt_type)), &pkt_type, sizeof(pkt_type)); 176 memcpy(skb_push(skb, sizeof(pkt_type)), &pkt_type, sizeof(pkt_type));
177 177
178 /* Add packet data and address4 */ 178 /* Add packet data and address4 */
179 memcpy(skb_put(skb, sizeof(struct ieee80211_hdr_3addr)), buf, 179 skb_put_data(skb, buf, sizeof(struct ieee80211_hdr_3addr));
180 sizeof(struct ieee80211_hdr_3addr)); 180 skb_put_data(skb, addr, ETH_ALEN);
181 memcpy(skb_put(skb, ETH_ALEN), addr, ETH_ALEN); 181 skb_put_data(skb, buf + sizeof(struct ieee80211_hdr_3addr),
182 memcpy(skb_put(skb, len - sizeof(struct ieee80211_hdr_3addr)), 182 len - sizeof(struct ieee80211_hdr_3addr));
183 buf + sizeof(struct ieee80211_hdr_3addr),
184 len - sizeof(struct ieee80211_hdr_3addr));
185 183
186 skb->priority = LOW_PRIO_TID; 184 skb->priority = LOW_PRIO_TID;
187 __net_timestamp(skb); 185 __net_timestamp(skb);
diff --git a/drivers/net/wireless/marvell/mwifiex/tdls.c b/drivers/net/wireless/marvell/mwifiex/tdls.c
index c76b7315af55..d38555fe4284 100644
--- a/drivers/net/wireless/marvell/mwifiex/tdls.c
+++ b/drivers/net/wireless/marvell/mwifiex/tdls.c
@@ -679,8 +679,7 @@ int mwifiex_send_tdls_data_frame(struct mwifiex_private *priv, const u8 *peer,
679 return ret; 679 return ret;
680 } 680 }
681 if (extra_ies_len) 681 if (extra_ies_len)
682 memcpy(skb_put(skb, extra_ies_len), extra_ies, 682 skb_put_data(skb, extra_ies, extra_ies_len);
683 extra_ies_len);
684 mwifiex_tdls_add_link_ie(skb, priv->curr_addr, peer, 683 mwifiex_tdls_add_link_ie(skb, priv->curr_addr, peer,
685 priv->cfg_bssid); 684 priv->cfg_bssid);
686 break; 685 break;
@@ -693,8 +692,7 @@ int mwifiex_send_tdls_data_frame(struct mwifiex_private *priv, const u8 *peer,
693 return ret; 692 return ret;
694 } 693 }
695 if (extra_ies_len) 694 if (extra_ies_len)
696 memcpy(skb_put(skb, extra_ies_len), extra_ies, 695 skb_put_data(skb, extra_ies, extra_ies_len);
697 extra_ies_len);
698 mwifiex_tdls_add_link_ie(skb, peer, priv->curr_addr, 696 mwifiex_tdls_add_link_ie(skb, peer, priv->curr_addr,
699 priv->cfg_bssid); 697 priv->cfg_bssid);
700 break; 698 break;
@@ -865,7 +863,7 @@ int mwifiex_send_tdls_action_frame(struct mwifiex_private *priv, const u8 *peer,
865 } 863 }
866 864
867 if (extra_ies_len) 865 if (extra_ies_len)
868 memcpy(skb_put(skb, extra_ies_len), extra_ies, extra_ies_len); 866 skb_put_data(skb, extra_ies, extra_ies_len);
869 867
870 /* the TDLS link IE is always added last we are the responder */ 868 /* the TDLS link IE is always added last we are the responder */
871 869
diff --git a/drivers/net/wireless/mediatek/mt7601u/dma.c b/drivers/net/wireless/mediatek/mt7601u/dma.c
index a8bc064bc14f..660267b359e4 100644
--- a/drivers/net/wireless/mediatek/mt7601u/dma.c
+++ b/drivers/net/wireless/mediatek/mt7601u/dma.c
@@ -52,7 +52,7 @@ mt7601u_rx_skb_from_seg(struct mt7601u_dev *dev, struct mt7601u_rxwi *rxwi,
52 goto bad_frame; 52 goto bad_frame;
53 53
54 if (rxwi->rxinfo & cpu_to_le32(MT_RXINFO_L2PAD)) { 54 if (rxwi->rxinfo & cpu_to_le32(MT_RXINFO_L2PAD)) {
55 memcpy(skb_put(skb, hdr_len), data, hdr_len); 55 skb_put_data(skb, data, hdr_len);
56 56
57 data += hdr_len + 2; 57 data += hdr_len + 2;
58 true_len -= hdr_len; 58 true_len -= hdr_len;
@@ -63,7 +63,7 @@ mt7601u_rx_skb_from_seg(struct mt7601u_dev *dev, struct mt7601u_rxwi *rxwi,
63 copy = (true_len <= skb_tailroom(skb)) ? true_len : hdr_len + 8; 63 copy = (true_len <= skb_tailroom(skb)) ? true_len : hdr_len + 8;
64 frag = true_len - copy; 64 frag = true_len - copy;
65 65
66 memcpy(skb_put(skb, copy), data, copy); 66 skb_put_data(skb, data, copy);
67 data += copy; 67 data += copy;
68 68
69 if (frag) { 69 if (frag) {
diff --git a/drivers/net/wireless/mediatek/mt7601u/mcu.c b/drivers/net/wireless/mediatek/mt7601u/mcu.c
index a9f5f398b2f8..65a8004418ea 100644
--- a/drivers/net/wireless/mediatek/mt7601u/mcu.c
+++ b/drivers/net/wireless/mediatek/mt7601u/mcu.c
@@ -68,7 +68,7 @@ mt7601u_mcu_msg_alloc(struct mt7601u_dev *dev, const void *data, int len)
68 skb = alloc_skb(len + MT_DMA_HDR_LEN + 4, GFP_KERNEL); 68 skb = alloc_skb(len + MT_DMA_HDR_LEN + 4, GFP_KERNEL);
69 if (skb) { 69 if (skb) {
70 skb_reserve(skb, MT_DMA_HDR_LEN); 70 skb_reserve(skb, MT_DMA_HDR_LEN);
71 memcpy(skb_put(skb, len), data, len); 71 skb_put_data(skb, data, len);
72 } 72 }
73 73
74 return skb; 74 return skb;
diff --git a/drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c b/drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c
index 4814d90c8040..f93b27f3a236 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/pearl/pcie.c
@@ -213,7 +213,7 @@ static void qtnf_pcie_control_rx_callback(void *arg, const u8 *buf, size_t len)
213 return; 213 return;
214 } 214 }
215 215
216 memcpy(skb_put(skb, len), buf, len); 216 skb_put_data(skb, buf, len);
217 217
218 qtnf_trans_handle_rx_ctl_packet(bus, skb); 218 qtnf_trans_handle_rx_ctl_packet(bus, skb);
219} 219}
diff --git a/drivers/net/wireless/quantenna/qtnfmac/qlink_util.h b/drivers/net/wireless/quantenna/qtnfmac/qlink_util.h
index d8de484b5995..9844ff0add2b 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/qlink_util.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/qlink_util.h
@@ -35,8 +35,7 @@ qtnf_cmd_skb_put_buffer(struct sk_buff *skb, const u8 *buf_src, size_t len)
35{ 35{
36 u8 *buf_dst; 36 u8 *buf_dst;
37 37
38 buf_dst = skb_put(skb, len); 38 buf_dst = skb_put_data(skb, buf_src, len);
39 memcpy(buf_dst, buf_src, len);
40} 39}
41 40
42static inline void qtnf_cmd_skb_put_tlv_arr(struct sk_buff *skb, 41static inline void qtnf_cmd_skb_put_tlv_arr(struct sk_buff *skb,
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
index 4a1bca1b1e26..b70985e126bf 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
@@ -203,9 +203,8 @@ void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
203 dump_hdr->timestamp_usec = cpu_to_le32(timestamp.tv_usec); 203 dump_hdr->timestamp_usec = cpu_to_le32(timestamp.tv_usec);
204 204
205 if (!(skbdesc->flags & SKBDESC_DESC_IN_SKB)) 205 if (!(skbdesc->flags & SKBDESC_DESC_IN_SKB))
206 memcpy(skb_put(skbcopy, skbdesc->desc_len), skbdesc->desc, 206 skb_put_data(skbcopy, skbdesc->desc, skbdesc->desc_len);
207 skbdesc->desc_len); 207 skb_put_data(skbcopy, skb->data, skb->len);
208 memcpy(skb_put(skbcopy, skb->len), skb->data, skb->len);
209 208
210 skb_queue_tail(&intf->frame_dump_skbqueue, skbcopy); 209 skb_queue_tail(&intf->frame_dump_skbqueue, skbcopy);
211 wake_up_interruptible(&intf->frame_dump_waitqueue); 210 wake_up_interruptible(&intf->frame_dump_waitqueue);
diff --git a/drivers/net/wireless/realtek/rtlwifi/pci.c b/drivers/net/wireless/realtek/rtlwifi/pci.c
index 2e6b888bd417..0c1f8307e179 100644
--- a/drivers/net/wireless/realtek/rtlwifi/pci.c
+++ b/drivers/net/wireless/realtek/rtlwifi/pci.c
@@ -735,8 +735,7 @@ static void _rtl_pci_rx_to_mac80211(struct ieee80211_hw *hw,
735 if (likely(uskb)) { 735 if (likely(uskb)) {
736 memcpy(IEEE80211_SKB_RXCB(uskb), &rx_status, 736 memcpy(IEEE80211_SKB_RXCB(uskb), &rx_status,
737 sizeof(rx_status)); 737 sizeof(rx_status));
738 pdata = (u8 *)skb_put(uskb, skb->len); 738 pdata = skb_put_data(uskb, skb->data, skb->len);
739 memcpy(pdata, skb->data, skb->len);
740 dev_kfree_skb_any(skb); 739 dev_kfree_skb_any(skb);
741 ieee80211_rx_irqsafe(hw, uskb); 740 ieee80211_rx_irqsafe(hw, uskb);
742 } else { 741 } else {
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/fw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/fw.c
index 21ed9ad3be7a..a2eca669873b 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/fw.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/fw.c
@@ -620,8 +620,7 @@ void rtl88e_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool b_dl_finished)
620 u1rsvdpageloc, 3); 620 u1rsvdpageloc, 3);
621 621
622 skb = dev_alloc_skb(totalpacketlen); 622 skb = dev_alloc_skb(totalpacketlen);
623 memcpy(skb_put(skb, totalpacketlen), 623 skb_put_data(skb, &reserved_page_packet, totalpacketlen);
624 &reserved_page_packet, totalpacketlen);
625 624
626 rtstatus = rtl_cmd_send_packet(hw, skb); 625 rtstatus = rtl_cmd_send_packet(hw, skb);
627 626
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192se/fw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192se/fw.c
index 89a0a28b8b20..dd3ba4810e7d 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192se/fw.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192se/fw.c
@@ -188,10 +188,9 @@ static bool _rtl92s_firmware_downloadcode(struct ieee80211_hw *hw,
188 if (!skb) 188 if (!skb)
189 return false; 189 return false;
190 skb_reserve(skb, extra_descoffset); 190 skb_reserve(skb, extra_descoffset);
191 seg_ptr = (u8 *)skb_put(skb, (u32)(frag_length - 191 seg_ptr = skb_put_data(skb,
192 extra_descoffset)); 192 code_virtual_address + frag_offset,
193 memcpy(seg_ptr, code_virtual_address + frag_offset, 193 (u32)(frag_length - extra_descoffset));
194 (u32)(frag_length - extra_descoffset));
195 194
196 tcb_desc = (struct rtl_tcb_desc *)(skb->cb); 195 tcb_desc = (struct rtl_tcb_desc *)(skb->cb);
197 tcb_desc->queue_index = TXCMD_QUEUE; 196 tcb_desc->queue_index = TXCMD_QUEUE;
diff --git a/drivers/net/wireless/realtek/rtlwifi/usb.c b/drivers/net/wireless/realtek/rtlwifi/usb.c
index 4d989b8ab185..5590d07d0918 100644
--- a/drivers/net/wireless/realtek/rtlwifi/usb.c
+++ b/drivers/net/wireless/realtek/rtlwifi/usb.c
@@ -653,7 +653,7 @@ static void _rtl_rx_completed(struct urb *_urb)
653 /* reserve some space for mac80211's radiotap */ 653 /* reserve some space for mac80211's radiotap */
654 skb_reserve(skb, __RADIO_TAP_SIZE_RSV); 654 skb_reserve(skb, __RADIO_TAP_SIZE_RSV);
655 655
656 memcpy(skb_put(skb, size), _urb->transfer_buffer, size); 656 skb_put_data(skb, _urb->transfer_buffer, size);
657 657
658 skb_queue_tail(&rtlusb->rx_queue, skb); 658 skb_queue_tail(&rtlusb->rx_queue, skb);
659 tasklet_schedule(&rtlusb->rx_work_tasklet); 659 tasklet_schedule(&rtlusb->rx_work_tasklet);
diff --git a/drivers/net/wireless/rsi/rsi_91x_mgmt.c b/drivers/net/wireless/rsi/rsi_91x_mgmt.c
index fac87c06357b..4433cec4367c 100644
--- a/drivers/net/wireless/rsi/rsi_91x_mgmt.c
+++ b/drivers/net/wireless/rsi/rsi_91x_mgmt.c
@@ -412,11 +412,9 @@ static int rsi_mgmt_pkt_to_core(struct rsi_common *common,
412 return -ENOMEM; 412 return -ENOMEM;
413 } 413 }
414 414
415 buffer = skb_put(skb, msg_len); 415 buffer = skb_put_data(skb,
416 416 (u8 *)(msg + FRAME_DESC_SZ + pad_bytes),
417 memcpy(buffer, 417 msg_len);
418 (u8 *)(msg + FRAME_DESC_SZ + pad_bytes),
419 msg_len);
420 418
421 pkt_recv = buffer[0]; 419 pkt_recv = buffer[0];
422 420
diff --git a/drivers/net/wireless/st/cw1200/scan.c b/drivers/net/wireless/st/cw1200/scan.c
index 0a0ff7e31f5b..cc2ce60f4f09 100644
--- a/drivers/net/wireless/st/cw1200/scan.c
+++ b/drivers/net/wireless/st/cw1200/scan.c
@@ -84,7 +84,7 @@ int cw1200_hw_scan(struct ieee80211_hw *hw,
84 return -ENOMEM; 84 return -ENOMEM;
85 85
86 if (req->ie_len) 86 if (req->ie_len)
87 memcpy(skb_put(frame.skb, req->ie_len), req->ie, req->ie_len); 87 skb_put_data(frame.skb, req->ie, req->ie_len);
88 88
89 /* will be unlocked in cw1200_scan_work() */ 89 /* will be unlocked in cw1200_scan_work() */
90 down(&priv->scan.lock); 90 down(&priv->scan.lock);
diff --git a/drivers/net/wireless/ti/wl1251/main.c b/drivers/net/wireless/ti/wl1251/main.c
index bbf7604889b7..08f0477f78d9 100644
--- a/drivers/net/wireless/ti/wl1251/main.c
+++ b/drivers/net/wireless/ti/wl1251/main.c
@@ -1036,7 +1036,7 @@ static int wl1251_op_hw_scan(struct ieee80211_hw *hw,
1036 goto out_idle; 1036 goto out_idle;
1037 } 1037 }
1038 if (req->ie_len) 1038 if (req->ie_len)
1039 memcpy(skb_put(skb, req->ie_len), req->ie, req->ie_len); 1039 skb_put_data(skb, req->ie, req->ie_len);
1040 1040
1041 ret = wl1251_cmd_template_set(wl, CMD_PROBE_REQ, skb->data, 1041 ret = wl1251_cmd_template_set(wl, CMD_PROBE_REQ, skb->data,
1042 skb->len); 1042 skb->len);
diff --git a/drivers/net/wireless/ti/wlcore/cmd.c b/drivers/net/wireless/ti/wlcore/cmd.c
index 4a39fb13c478..229f4d01f239 100644
--- a/drivers/net/wireless/ti/wlcore/cmd.c
+++ b/drivers/net/wireless/ti/wlcore/cmd.c
@@ -1156,9 +1156,9 @@ int wl12xx_cmd_build_probe_req(struct wl1271 *wl, struct wl12xx_vif *wlvif,
1156 goto out; 1156 goto out;
1157 } 1157 }
1158 if (ie0_len) 1158 if (ie0_len)
1159 memcpy(skb_put(skb, ie0_len), ie0, ie0_len); 1159 skb_put_data(skb, ie0, ie0_len);
1160 if (ie1_len) 1160 if (ie1_len)
1161 memcpy(skb_put(skb, ie1_len), ie1, ie1_len); 1161 skb_put_data(skb, ie1, ie1_len);
1162 1162
1163 if (sched_scan && 1163 if (sched_scan &&
1164 (wl->quirks & WLCORE_QUIRK_DUAL_PROBE_TMPL)) { 1164 (wl->quirks & WLCORE_QUIRK_DUAL_PROBE_TMPL)) {
diff --git a/drivers/net/wireless/ti/wlcore/rx.c b/drivers/net/wireless/ti/wlcore/rx.c
index 52a55f9acd80..53cd6d4d5b50 100644
--- a/drivers/net/wireless/ti/wlcore/rx.c
+++ b/drivers/net/wireless/ti/wlcore/rx.c
@@ -174,15 +174,13 @@ static int wl1271_rx_handle_data(struct wl1271 *wl, u8 *data, u32 length,
174 /* reserve the unaligned payload(if any) */ 174 /* reserve the unaligned payload(if any) */
175 skb_reserve(skb, reserved); 175 skb_reserve(skb, reserved);
176 176
177 buf = skb_put(skb, pkt_data_len);
178
179 /* 177 /*
180 * Copy packets from aggregation buffer to the skbs without rx 178 * Copy packets from aggregation buffer to the skbs without rx
181 * descriptor and with packet payload aligned care. In case of unaligned 179 * descriptor and with packet payload aligned care. In case of unaligned
182 * packets copy the packets in offset of 2 bytes guarantee IP header 180 * packets copy the packets in offset of 2 bytes guarantee IP header
183 * payload aligned to 4 bytes. 181 * payload aligned to 4 bytes.
184 */ 182 */
185 memcpy(buf, data + sizeof(*desc), pkt_data_len); 183 buf = skb_put_data(skb, data + sizeof(*desc), pkt_data_len);
186 if (rx_align == WLCORE_RX_BUF_PADDED) 184 if (rx_align == WLCORE_RX_BUF_PADDED)
187 skb_pull(skb, RX_BUF_ALIGN); 185 skb_pull(skb, RX_BUF_ALIGN);
188 186
diff --git a/drivers/net/wireless/zydas/zd1201.c b/drivers/net/wireless/zydas/zd1201.c
index de7ff395977a..7f586d76cf17 100644
--- a/drivers/net/wireless/zydas/zd1201.c
+++ b/drivers/net/wireless/zydas/zd1201.c
@@ -326,13 +326,13 @@ static void zd1201_usbrx(struct urb *urb)
326 if (!(skb = dev_alloc_skb(datalen+24))) 326 if (!(skb = dev_alloc_skb(datalen+24)))
327 goto resubmit; 327 goto resubmit;
328 328
329 memcpy(skb_put(skb, 2), &data[datalen-16], 2); 329 skb_put_data(skb, &data[datalen - 16], 2);
330 memcpy(skb_put(skb, 2), &data[datalen-2], 2); 330 skb_put_data(skb, &data[datalen - 2], 2);
331 memcpy(skb_put(skb, 6), &data[datalen-14], 6); 331 skb_put_data(skb, &data[datalen - 14], 6);
332 memcpy(skb_put(skb, 6), &data[datalen-22], 6); 332 skb_put_data(skb, &data[datalen - 22], 6);
333 memcpy(skb_put(skb, 6), &data[datalen-8], 6); 333 skb_put_data(skb, &data[datalen - 8], 6);
334 memcpy(skb_put(skb, 2), &data[datalen-24], 2); 334 skb_put_data(skb, &data[datalen - 24], 2);
335 memcpy(skb_put(skb, len), data, len); 335 skb_put_data(skb, data, len);
336 skb->protocol = eth_type_trans(skb, zd->dev); 336 skb->protocol = eth_type_trans(skb, zd->dev);
337 zd->dev->stats.rx_packets++; 337 zd->dev->stats.rx_packets++;
338 zd->dev->stats.rx_bytes += skb->len; 338 zd->dev->stats.rx_bytes += skb->len;
@@ -359,9 +359,9 @@ static void zd1201_usbrx(struct urb *urb)
359 frag->skb = skb; 359 frag->skb = skb;
360 frag->seq = seq & IEEE80211_SCTL_SEQ; 360 frag->seq = seq & IEEE80211_SCTL_SEQ;
361 skb_reserve(skb, 2); 361 skb_reserve(skb, 2);
362 memcpy(skb_put(skb, 12), &data[datalen-14], 12); 362 skb_put_data(skb, &data[datalen - 14], 12);
363 memcpy(skb_put(skb, 2), &data[6], 2); 363 skb_put_data(skb, &data[6], 2);
364 memcpy(skb_put(skb, len), data+8, len); 364 skb_put_data(skb, data + 8, len);
365 hlist_add_head(&frag->fnode, &zd->fraglist); 365 hlist_add_head(&frag->fnode, &zd->fraglist);
366 goto resubmit; 366 goto resubmit;
367 } 367 }
@@ -385,9 +385,9 @@ static void zd1201_usbrx(struct urb *urb)
385 if (!skb) 385 if (!skb)
386 goto resubmit; 386 goto resubmit;
387 skb_reserve(skb, 2); 387 skb_reserve(skb, 2);
388 memcpy(skb_put(skb, 12), &data[datalen-14], 12); 388 skb_put_data(skb, &data[datalen - 14], 12);
389 memcpy(skb_put(skb, 2), &data[6], 2); 389 skb_put_data(skb, &data[6], 2);
390 memcpy(skb_put(skb, len), data+8, len); 390 skb_put_data(skb, data + 8, len);
391 } 391 }
392 skb->protocol = eth_type_trans(skb, zd->dev); 392 skb->protocol = eth_type_trans(skb, zd->dev);
393 zd->dev->stats.rx_packets++; 393 zd->dev->stats.rx_packets++;
diff --git a/drivers/net/wireless/zydas/zd1211rw/zd_mac.c b/drivers/net/wireless/zydas/zd1211rw/zd_mac.c
index fe6517a621b0..2d929d2edb00 100644
--- a/drivers/net/wireless/zydas/zd1211rw/zd_mac.c
+++ b/drivers/net/wireless/zydas/zd1211rw/zd_mac.c
@@ -1103,7 +1103,7 @@ int zd_mac_rx(struct ieee80211_hw *hw, const u8 *buffer, unsigned int length)
1103 } 1103 }
1104 1104
1105 /* FIXME : could we avoid this big memcpy ? */ 1105 /* FIXME : could we avoid this big memcpy ? */
1106 memcpy(skb_put(skb, length), buffer, length); 1106 skb_put_data(skb, buffer, length);
1107 1107
1108 memcpy(IEEE80211_SKB_RXCB(skb), &stats, sizeof(stats)); 1108 memcpy(IEEE80211_SKB_RXCB(skb), &stats, sizeof(stats));
1109 ieee80211_rx_irqsafe(hw, skb); 1109 ieee80211_rx_irqsafe(hw, skb);
diff --git a/drivers/nfc/fdp/fdp.c b/drivers/nfc/fdp/fdp.c
index 7c1eaea3b685..badd8167ac73 100644
--- a/drivers/nfc/fdp/fdp.c
+++ b/drivers/nfc/fdp/fdp.c
@@ -228,8 +228,7 @@ static int fdp_nci_send_patch(struct nci_dev *ndev, u8 conn_id, u8 type)
228 228
229 skb_reserve(skb, NCI_CTRL_HDR_SIZE); 229 skb_reserve(skb, NCI_CTRL_HDR_SIZE);
230 230
231 memcpy(skb_put(skb, payload_size), fw->data + (fw->size - len), 231 skb_put_data(skb, fw->data + (fw->size - len), payload_size);
232 payload_size);
233 232
234 rc = nci_send_data(ndev, conn_id, skb); 233 rc = nci_send_data(ndev, conn_id, skb);
235 234
diff --git a/drivers/nfc/fdp/i2c.c b/drivers/nfc/fdp/i2c.c
index 712936f5d2d6..0877e2283f35 100644
--- a/drivers/nfc/fdp/i2c.c
+++ b/drivers/nfc/fdp/i2c.c
@@ -186,7 +186,7 @@ static int fdp_nci_i2c_read(struct fdp_i2c_phy *phy, struct sk_buff **skb)
186 goto flush; 186 goto flush;
187 } 187 }
188 188
189 memcpy(skb_put(*skb, len), tmp, len); 189 skb_put_data(*skb, tmp, len);
190 fdp_nci_i2c_dump_skb(&client->dev, "fdp_rd", *skb); 190 fdp_nci_i2c_dump_skb(&client->dev, "fdp_rd", *skb);
191 191
192 fdp_nci_i2c_remove_len_lrc(*skb); 192 fdp_nci_i2c_remove_len_lrc(*skb);
diff --git a/drivers/nfc/nfcmrvl/fw_dnld.c b/drivers/nfc/nfcmrvl/fw_dnld.c
index c38bdd6a5a82..7c710458568e 100644
--- a/drivers/nfc/nfcmrvl/fw_dnld.c
+++ b/drivers/nfc/nfcmrvl/fw_dnld.c
@@ -324,10 +324,9 @@ static int process_state_fw_dnld(struct nfcmrvl_private *priv,
324 out_skb = alloc_lc_skb(priv, priv->fw_dnld.chunk_len); 324 out_skb = alloc_lc_skb(priv, priv->fw_dnld.chunk_len);
325 if (!out_skb) 325 if (!out_skb)
326 return -ENOMEM; 326 return -ENOMEM;
327 memcpy(skb_put(out_skb, priv->fw_dnld.chunk_len), 327 skb_put_data(out_skb,
328 ((uint8_t *)priv->fw_dnld.fw->data) + 328 ((uint8_t *)priv->fw_dnld.fw->data) + priv->fw_dnld.offset,
329 priv->fw_dnld.offset, 329 priv->fw_dnld.chunk_len);
330 priv->fw_dnld.chunk_len);
331 nci_send_frame(priv->ndev, out_skb); 330 nci_send_frame(priv->ndev, out_skb);
332 priv->fw_dnld.substate = SUBSTATE_WAIT_DATA_CREDIT; 331 priv->fw_dnld.substate = SUBSTATE_WAIT_DATA_CREDIT;
333 } 332 }
diff --git a/drivers/nfc/nfcmrvl/i2c.c b/drivers/nfc/nfcmrvl/i2c.c
index 78b7aa835c81..ffec103702f1 100644
--- a/drivers/nfc/nfcmrvl/i2c.c
+++ b/drivers/nfc/nfcmrvl/i2c.c
@@ -60,7 +60,7 @@ static int nfcmrvl_i2c_read(struct nfcmrvl_i2c_drv_data *drv_data,
60 return -ENOMEM; 60 return -ENOMEM;
61 61
62 /* Copy NCI header into the SKB */ 62 /* Copy NCI header into the SKB */
63 memcpy(skb_put(*skb, NCI_CTRL_HDR_SIZE), &nci_hdr, NCI_CTRL_HDR_SIZE); 63 skb_put_data(*skb, &nci_hdr, NCI_CTRL_HDR_SIZE);
64 64
65 if (nci_hdr.plen) { 65 if (nci_hdr.plen) {
66 /* Read the NCI payload */ 66 /* Read the NCI payload */
diff --git a/drivers/nfc/nfcmrvl/usb.c b/drivers/nfc/nfcmrvl/usb.c
index 585a0f20835b..699aa9d16575 100644
--- a/drivers/nfc/nfcmrvl/usb.c
+++ b/drivers/nfc/nfcmrvl/usb.c
@@ -83,8 +83,8 @@ static void nfcmrvl_bulk_complete(struct urb *urb)
83 if (!skb) { 83 if (!skb) {
84 nfc_err(&drv_data->udev->dev, "failed to alloc mem\n"); 84 nfc_err(&drv_data->udev->dev, "failed to alloc mem\n");
85 } else { 85 } else {
86 memcpy(skb_put(skb, urb->actual_length), 86 skb_put_data(skb, urb->transfer_buffer,
87 urb->transfer_buffer, urb->actual_length); 87 urb->actual_length);
88 if (nfcmrvl_nci_recv_frame(drv_data->priv, skb) < 0) 88 if (nfcmrvl_nci_recv_frame(drv_data->priv, skb) < 0)
89 nfc_err(&drv_data->udev->dev, 89 nfc_err(&drv_data->udev->dev,
90 "corrupted Rx packet\n"); 90 "corrupted Rx packet\n");
diff --git a/drivers/nfc/nxp-nci/firmware.c b/drivers/nfc/nxp-nci/firmware.c
index 553011f58339..99ffee1dfd1e 100644
--- a/drivers/nfc/nxp-nci/firmware.c
+++ b/drivers/nfc/nxp-nci/firmware.c
@@ -124,8 +124,7 @@ static int nxp_nci_fw_send_chunk(struct nxp_nci_info *info)
124 header |= chunk_len & NXP_NCI_FW_FRAME_LEN_MASK; 124 header |= chunk_len & NXP_NCI_FW_FRAME_LEN_MASK;
125 put_unaligned_be16(header, skb_put(skb, NXP_NCI_FW_HDR_LEN)); 125 put_unaligned_be16(header, skb_put(skb, NXP_NCI_FW_HDR_LEN));
126 126
127 memcpy(skb_put(skb, chunk_len), fw_info->data + fw_info->written, 127 skb_put_data(skb, fw_info->data + fw_info->written, chunk_len);
128 chunk_len);
129 128
130 crc = nxp_nci_fw_crc(skb->data, chunk_len + NXP_NCI_FW_HDR_LEN); 129 crc = nxp_nci_fw_crc(skb->data, chunk_len + NXP_NCI_FW_HDR_LEN);
131 put_unaligned_be16(crc, skb_put(skb, NXP_NCI_FW_CRC_LEN)); 130 put_unaligned_be16(crc, skb_put(skb, NXP_NCI_FW_CRC_LEN));
diff --git a/drivers/nfc/nxp-nci/i2c.c b/drivers/nfc/nxp-nci/i2c.c
index ff22d761183c..198585bbc771 100644
--- a/drivers/nfc/nxp-nci/i2c.c
+++ b/drivers/nfc/nxp-nci/i2c.c
@@ -135,7 +135,7 @@ static int nxp_nci_i2c_fw_read(struct nxp_nci_i2c_phy *phy,
135 goto fw_read_exit; 135 goto fw_read_exit;
136 } 136 }
137 137
138 memcpy(skb_put(*skb, NXP_NCI_FW_HDR_LEN), &header, NXP_NCI_FW_HDR_LEN); 138 skb_put_data(*skb, &header, NXP_NCI_FW_HDR_LEN);
139 139
140 r = i2c_master_recv(client, skb_put(*skb, frame_len), frame_len); 140 r = i2c_master_recv(client, skb_put(*skb, frame_len), frame_len);
141 if (r != frame_len) { 141 if (r != frame_len) {
@@ -176,8 +176,7 @@ static int nxp_nci_i2c_nci_read(struct nxp_nci_i2c_phy *phy,
176 goto nci_read_exit; 176 goto nci_read_exit;
177 } 177 }
178 178
179 memcpy(skb_put(*skb, NCI_CTRL_HDR_SIZE), (void *) &header, 179 skb_put_data(*skb, (void *)&header, NCI_CTRL_HDR_SIZE);
180 NCI_CTRL_HDR_SIZE);
181 180
182 r = i2c_master_recv(client, skb_put(*skb, header.plen), header.plen); 181 r = i2c_master_recv(client, skb_put(*skb, header.plen), header.plen);
183 if (r != header.plen) { 182 if (r != header.plen) {
diff --git a/drivers/nfc/pn533/pn533.c b/drivers/nfc/pn533/pn533.c
index 70c304504a29..9200bb308e42 100644
--- a/drivers/nfc/pn533/pn533.c
+++ b/drivers/nfc/pn533/pn533.c
@@ -1035,11 +1035,10 @@ static struct sk_buff *pn533_alloc_poll_tg_frame(struct pn533 *dev)
1035 *skb_put(skb, 1) = PN533_INIT_TARGET_DEP; 1035 *skb_put(skb, 1) = PN533_INIT_TARGET_DEP;
1036 1036
1037 /* MIFARE params */ 1037 /* MIFARE params */
1038 memcpy(skb_put(skb, 6), mifare_params, 6); 1038 skb_put_data(skb, mifare_params, 6);
1039 1039
1040 /* Felica params */ 1040 /* Felica params */
1041 felica = skb_put(skb, 18); 1041 felica = skb_put_data(skb, felica_params, 18);
1042 memcpy(felica, felica_params, 18);
1043 get_random_bytes(felica + 2, 6); 1042 get_random_bytes(felica + 2, 6);
1044 1043
1045 /* NFCID3 */ 1044 /* NFCID3 */
@@ -1049,8 +1048,7 @@ static struct sk_buff *pn533_alloc_poll_tg_frame(struct pn533 *dev)
1049 /* General bytes */ 1048 /* General bytes */
1050 *skb_put(skb, 1) = gbytes_len; 1049 *skb_put(skb, 1) = gbytes_len;
1051 1050
1052 gb = skb_put(skb, gbytes_len); 1051 gb = skb_put_data(skb, gbytes, gbytes_len);
1053 memcpy(gb, gbytes, gbytes_len);
1054 1052
1055 /* Len Tk */ 1053 /* Len Tk */
1056 *skb_put(skb, 1) = 0; 1054 *skb_put(skb, 1) = 0;
@@ -1384,15 +1382,14 @@ static int pn533_poll_dep(struct nfc_dev *nfc_dev)
1384 *next = 0; 1382 *next = 0;
1385 1383
1386 /* Copy passive data */ 1384 /* Copy passive data */
1387 memcpy(skb_put(skb, PASSIVE_DATA_LEN), passive_data, PASSIVE_DATA_LEN); 1385 skb_put_data(skb, passive_data, PASSIVE_DATA_LEN);
1388 *next |= 1; 1386 *next |= 1;
1389 1387
1390 /* Copy NFCID3 (which is NFCID2 from SENSF_RES) */ 1388 /* Copy NFCID3 (which is NFCID2 from SENSF_RES) */
1391 memcpy(skb_put(skb, NFC_NFCID3_MAXSIZE), nfcid3, 1389 skb_put_data(skb, nfcid3, NFC_NFCID3_MAXSIZE);
1392 NFC_NFCID3_MAXSIZE);
1393 *next |= 2; 1390 *next |= 2;
1394 1391
1395 memcpy(skb_put(skb, dev->gb_len), dev->gb, dev->gb_len); 1392 skb_put_data(skb, dev->gb, dev->gb_len);
1396 *next |= 4; /* We have some Gi */ 1393 *next |= 4; /* We have some Gi */
1397 1394
1398 rc = pn533_send_cmd_async(dev, PN533_CMD_IN_JUMP_FOR_DEP, skb, 1395 rc = pn533_send_cmd_async(dev, PN533_CMD_IN_JUMP_FOR_DEP, skb,
@@ -1472,7 +1469,7 @@ static struct sk_buff *pn533_alloc_poll_in_frame(struct pn533 *dev,
1472 if (!skb) 1469 if (!skb)
1473 return NULL; 1470 return NULL;
1474 1471
1475 memcpy(skb_put(skb, mod->len), &mod->data, mod->len); 1472 skb_put_data(skb, &mod->data, mod->len);
1476 1473
1477 return skb; 1474 return skb;
1478} 1475}
@@ -1858,7 +1855,7 @@ static int pn533_dep_link_up(struct nfc_dev *nfc_dev, struct nfc_target *target,
1858 *next = 0; 1855 *next = 0;
1859 1856
1860 /* Copy passive data */ 1857 /* Copy passive data */
1861 memcpy(skb_put(skb, PASSIVE_DATA_LEN), passive_data, PASSIVE_DATA_LEN); 1858 skb_put_data(skb, passive_data, PASSIVE_DATA_LEN);
1862 *next |= 1; 1859 *next |= 1;
1863 1860
1864 /* Copy NFCID3 (which is NFCID2 from SENSF_RES) */ 1861 /* Copy NFCID3 (which is NFCID2 from SENSF_RES) */
@@ -1866,12 +1863,11 @@ static int pn533_dep_link_up(struct nfc_dev *nfc_dev, struct nfc_target *target,
1866 memcpy(skb_put(skb, NFC_NFCID3_MAXSIZE), target->nfcid2, 1863 memcpy(skb_put(skb, NFC_NFCID3_MAXSIZE), target->nfcid2,
1867 target->nfcid2_len); 1864 target->nfcid2_len);
1868 else 1865 else
1869 memcpy(skb_put(skb, NFC_NFCID3_MAXSIZE), nfcid3, 1866 skb_put_data(skb, nfcid3, NFC_NFCID3_MAXSIZE);
1870 NFC_NFCID3_MAXSIZE);
1871 *next |= 2; 1867 *next |= 2;
1872 1868
1873 if (gb != NULL && gb_len > 0) { 1869 if (gb != NULL && gb_len > 0) {
1874 memcpy(skb_put(skb, gb_len), gb, gb_len); 1870 skb_put_data(skb, gb, gb_len);
1875 *next |= 4; /* We have some Gi */ 1871 *next |= 4; /* We have some Gi */
1876 } else { 1872 } else {
1877 *next = 0; 1873 *next = 0;
@@ -2100,7 +2096,7 @@ static int pn533_fill_fragment_skbs(struct pn533 *dev, struct sk_buff *skb)
2100 *skb_push(frag, sizeof(u8)) = 1; /* TG */ 2096 *skb_push(frag, sizeof(u8)) = 1; /* TG */
2101 } 2097 }
2102 2098
2103 memcpy(skb_put(frag, frag_size), skb->data, frag_size); 2099 skb_put_data(frag, skb->data, frag_size);
2104 2100
2105 /* Reduce the size of incoming buffer */ 2101 /* Reduce the size of incoming buffer */
2106 skb_pull(skb, frag_size); 2102 skb_pull(skb, frag_size);
@@ -2375,7 +2371,7 @@ static int pn533_set_configuration(struct pn533 *dev, u8 cfgitem, u8 *cfgdata,
2375 return -ENOMEM; 2371 return -ENOMEM;
2376 2372
2377 *skb_put(skb, sizeof(cfgitem)) = cfgitem; 2373 *skb_put(skb, sizeof(cfgitem)) = cfgitem;
2378 memcpy(skb_put(skb, cfgdata_len), cfgdata, cfgdata_len); 2374 skb_put_data(skb, cfgdata, cfgdata_len);
2379 2375
2380 resp = pn533_send_cmd_sync(dev, PN533_CMD_RF_CONFIGURATION, skb); 2376 resp = pn533_send_cmd_sync(dev, PN533_CMD_RF_CONFIGURATION, skb);
2381 if (IS_ERR(resp)) 2377 if (IS_ERR(resp))
diff --git a/drivers/nfc/pn533/usb.c b/drivers/nfc/pn533/usb.c
index 8ed203ea21ea..e153e8b64bb8 100644
--- a/drivers/nfc/pn533/usb.c
+++ b/drivers/nfc/pn533/usb.c
@@ -75,8 +75,8 @@ static void pn533_recv_response(struct urb *urb)
75 if (!skb) { 75 if (!skb) {
76 nfc_err(&phy->udev->dev, "failed to alloc memory\n"); 76 nfc_err(&phy->udev->dev, "failed to alloc memory\n");
77 } else { 77 } else {
78 memcpy(skb_put(skb, urb->actual_length), 78 skb_put_data(skb, urb->transfer_buffer,
79 urb->transfer_buffer, urb->actual_length); 79 urb->actual_length);
80 } 80 }
81 } 81 }
82 82
diff --git a/drivers/nfc/port100.c b/drivers/nfc/port100.c
index 19be93e177fe..e1260da73d45 100644
--- a/drivers/nfc/port100.c
+++ b/drivers/nfc/port100.c
@@ -1089,9 +1089,8 @@ static int port100_in_set_rf(struct nfc_digital_dev *ddev, u8 rf)
1089 if (!skb) 1089 if (!skb)
1090 return -ENOMEM; 1090 return -ENOMEM;
1091 1091
1092 memcpy(skb_put(skb, sizeof(struct port100_in_rf_setting)), 1092 skb_put_data(skb, &in_rf_settings[rf],
1093 &in_rf_settings[rf], 1093 sizeof(struct port100_in_rf_setting));
1094 sizeof(struct port100_in_rf_setting));
1095 1094
1096 resp = port100_send_cmd_sync(dev, PORT100_CMD_IN_SET_RF, skb); 1095 resp = port100_send_cmd_sync(dev, PORT100_CMD_IN_SET_RF, skb);
1097 1096
@@ -1133,7 +1132,7 @@ static int port100_in_set_framing(struct nfc_digital_dev *ddev, int param)
1133 if (!skb) 1132 if (!skb)
1134 return -ENOMEM; 1133 return -ENOMEM;
1135 1134
1136 memcpy(skb_put(skb, size), protocols, size); 1135 skb_put_data(skb, protocols, size);
1137 1136
1138 resp = port100_send_cmd_sync(dev, PORT100_CMD_IN_SET_PROTOCOL, skb); 1137 resp = port100_send_cmd_sync(dev, PORT100_CMD_IN_SET_PROTOCOL, skb);
1139 1138
@@ -1247,9 +1246,8 @@ static int port100_tg_set_rf(struct nfc_digital_dev *ddev, u8 rf)
1247 if (!skb) 1246 if (!skb)
1248 return -ENOMEM; 1247 return -ENOMEM;
1249 1248
1250 memcpy(skb_put(skb, sizeof(struct port100_tg_rf_setting)), 1249 skb_put_data(skb, &tg_rf_settings[rf],
1251 &tg_rf_settings[rf], 1250 sizeof(struct port100_tg_rf_setting));
1252 sizeof(struct port100_tg_rf_setting));
1253 1251
1254 resp = port100_send_cmd_sync(dev, PORT100_CMD_TG_SET_RF, skb); 1252 resp = port100_send_cmd_sync(dev, PORT100_CMD_TG_SET_RF, skb);
1255 1253
@@ -1291,7 +1289,7 @@ static int port100_tg_set_framing(struct nfc_digital_dev *ddev, int param)
1291 if (!skb) 1289 if (!skb)
1292 return -ENOMEM; 1290 return -ENOMEM;
1293 1291
1294 memcpy(skb_put(skb, size), protocols, size); 1292 skb_put_data(skb, protocols, size);
1295 1293
1296 resp = port100_send_cmd_sync(dev, PORT100_CMD_TG_SET_PROTOCOL, skb); 1294 resp = port100_send_cmd_sync(dev, PORT100_CMD_TG_SET_PROTOCOL, skb);
1297 1295
diff --git a/drivers/nfc/s3fwrn5/firmware.c b/drivers/nfc/s3fwrn5/firmware.c
index 5f97da1947e3..38548bd970cd 100644
--- a/drivers/nfc/s3fwrn5/firmware.c
+++ b/drivers/nfc/s3fwrn5/firmware.c
@@ -76,9 +76,9 @@ static int s3fwrn5_fw_prep_msg(struct s3fwrn5_fw_info *fw_info,
76 if (!skb) 76 if (!skb)
77 return -ENOMEM; 77 return -ENOMEM;
78 78
79 memcpy(skb_put(skb, S3FWRN5_FW_HDR_SIZE), &hdr, S3FWRN5_FW_HDR_SIZE); 79 skb_put_data(skb, &hdr, S3FWRN5_FW_HDR_SIZE);
80 if (len) 80 if (len)
81 memcpy(skb_put(skb, len), data, len); 81 skb_put_data(skb, data, len);
82 82
83 *msg = skb; 83 *msg = skb;
84 84
diff --git a/drivers/nfc/s3fwrn5/i2c.c b/drivers/nfc/s3fwrn5/i2c.c
index 3ed0adf6479b..3f09d7fd2285 100644
--- a/drivers/nfc/s3fwrn5/i2c.c
+++ b/drivers/nfc/s3fwrn5/i2c.c
@@ -157,7 +157,7 @@ static int s3fwrn5_i2c_read(struct s3fwrn5_i2c_phy *phy)
157 if (!skb) 157 if (!skb)
158 return -ENOMEM; 158 return -ENOMEM;
159 159
160 memcpy(skb_put(skb, hdr_size), hdr, hdr_size); 160 skb_put_data(skb, hdr, hdr_size);
161 161
162 if (data_len == 0) 162 if (data_len == 0)
163 goto out; 163 goto out;
diff --git a/drivers/nfc/st21nfca/dep.c b/drivers/nfc/st21nfca/dep.c
index 798a32bbac5d..ada7b114b6c1 100644
--- a/drivers/nfc/st21nfca/dep.c
+++ b/drivers/nfc/st21nfca/dep.c
@@ -564,7 +564,7 @@ int st21nfca_im_send_atr_req(struct nfc_hci_dev *hdev, u8 *gb, size_t gb_len)
564 atr_req->ppi = ST21NFCA_LR_BITS_PAYLOAD_SIZE_254B; 564 atr_req->ppi = ST21NFCA_LR_BITS_PAYLOAD_SIZE_254B;
565 if (gb_len) { 565 if (gb_len) {
566 atr_req->ppi |= ST21NFCA_GB_BIT; 566 atr_req->ppi |= ST21NFCA_GB_BIT;
567 memcpy(skb_put(skb, gb_len), gb, gb_len); 567 skb_put_data(skb, gb, gb_len);
568 } 568 }
569 atr_req->length = sizeof(struct st21nfca_atr_req) + hdev->gb_len; 569 atr_req->length = sizeof(struct st21nfca_atr_req) + hdev->gb_len;
570 570
diff --git a/drivers/nfc/st21nfca/i2c.c b/drivers/nfc/st21nfca/i2c.c
index 02a920ca07c8..94d0b913b627 100644
--- a/drivers/nfc/st21nfca/i2c.c
+++ b/drivers/nfc/st21nfca/i2c.c
@@ -407,7 +407,7 @@ static int st21nfca_hci_i2c_read(struct st21nfca_i2c_phy *phy,
407 phy->current_read_len = 0; 407 phy->current_read_len = 0;
408 } 408 }
409 409
410 memcpy(skb_put(skb, len), buf, len); 410 skb_put_data(skb, buf, len);
411 411
412 if (skb->data[skb->len - 1] == ST21NFCA_SOF_EOF) { 412 if (skb->data[skb->len - 1] == ST21NFCA_SOF_EOF) {
413 phy->current_read_len = 0; 413 phy->current_read_len = 0;
diff --git a/drivers/rpmsg/rpmsg_char.c b/drivers/rpmsg/rpmsg_char.c
index 0ca2ccc09ca6..2576284f99a7 100644
--- a/drivers/rpmsg/rpmsg_char.c
+++ b/drivers/rpmsg/rpmsg_char.c
@@ -116,7 +116,7 @@ static int rpmsg_ept_cb(struct rpmsg_device *rpdev, void *buf, int len,
116 if (!skb) 116 if (!skb)
117 return -ENOMEM; 117 return -ENOMEM;
118 118
119 memcpy(skb_put(skb, len), buf, len); 119 skb_put_data(skb, buf, len);
120 120
121 spin_lock(&eptdev->queue_lock); 121 spin_lock(&eptdev->queue_lock);
122 skb_queue_tail(&eptdev->queue, skb); 122 skb_queue_tail(&eptdev->queue, skb);
diff --git a/drivers/s390/net/ctcm_fsms.c b/drivers/s390/net/ctcm_fsms.c
index 730d9619400e..e9847ce3860d 100644
--- a/drivers/s390/net/ctcm_fsms.c
+++ b/drivers/s390/net/ctcm_fsms.c
@@ -1279,7 +1279,7 @@ static void ctcmpc_chx_txdone(fsm_instance *fi, int event, void *arg)
1279 __func__, data_space); 1279 __func__, data_space);
1280 1280
1281 while ((skb = skb_dequeue(&ch->collect_queue))) { 1281 while ((skb = skb_dequeue(&ch->collect_queue))) {
1282 memcpy(skb_put(ch->trans_skb, skb->len), skb->data, skb->len); 1282 skb_put_data(ch->trans_skb, skb->data, skb->len);
1283 p_header = (struct pdu *) 1283 p_header = (struct pdu *)
1284 (skb_tail_pointer(ch->trans_skb) - skb->len); 1284 (skb_tail_pointer(ch->trans_skb) - skb->len);
1285 p_header->pdu_flag = 0x00; 1285 p_header->pdu_flag = 0x00;
@@ -1431,13 +1431,12 @@ static void ctcmpc_chx_rx(fsm_instance *fi, int event, void *arg)
1431 break; 1431 break;
1432 case MPCG_STATE_FLOWC: 1432 case MPCG_STATE_FLOWC:
1433 case MPCG_STATE_READY: 1433 case MPCG_STATE_READY:
1434 memcpy(skb_put(new_skb, block_len), 1434 skb_put_data(new_skb, skb->data, block_len);
1435 skb->data, block_len);
1436 skb_queue_tail(&ch->io_queue, new_skb); 1435 skb_queue_tail(&ch->io_queue, new_skb);
1437 tasklet_schedule(&ch->ch_tasklet); 1436 tasklet_schedule(&ch->ch_tasklet);
1438 break; 1437 break;
1439 default: 1438 default:
1440 memcpy(skb_put(new_skb, len), skb->data, len); 1439 skb_put_data(new_skb, skb->data, len);
1441 skb_queue_tail(&ch->io_queue, new_skb); 1440 skb_queue_tail(&ch->io_queue, new_skb);
1442 tasklet_hi_schedule(&ch->ch_tasklet); 1441 tasklet_hi_schedule(&ch->ch_tasklet);
1443 break; 1442 break;
diff --git a/drivers/s390/net/ctcm_main.c b/drivers/s390/net/ctcm_main.c
index 198842ce6876..99121352c57b 100644
--- a/drivers/s390/net/ctcm_main.c
+++ b/drivers/s390/net/ctcm_main.c
@@ -522,7 +522,7 @@ static int ctcm_transmit_skb(struct channel *ch, struct sk_buff *skb)
522 ctcm_clear_busy(ch->netdev); 522 ctcm_clear_busy(ch->netdev);
523 return -ENOMEM; 523 return -ENOMEM;
524 } else { 524 } else {
525 memcpy(skb_put(nskb, skb->len), skb->data, skb->len); 525 skb_put_data(nskb, skb->data, skb->len);
526 atomic_inc(&nskb->users); 526 atomic_inc(&nskb->users);
527 atomic_dec(&skb->users); 527 atomic_dec(&skb->users);
528 dev_kfree_skb_irq(skb); 528 dev_kfree_skb_irq(skb);
@@ -638,7 +638,7 @@ static void ctcmpc_send_sweep_req(struct channel *rch)
638 header->th.th_seq_num = 0x00; 638 header->th.th_seq_num = 0x00;
639 header->sw.th_last_seq = ch->th_seq_num; 639 header->sw.th_last_seq = ch->th_seq_num;
640 640
641 memcpy(skb_put(sweep_skb, TH_SWEEP_LENGTH), header, TH_SWEEP_LENGTH); 641 skb_put_data(sweep_skb, header, TH_SWEEP_LENGTH);
642 642
643 kfree(header); 643 kfree(header);
644 644
@@ -728,7 +728,7 @@ static int ctcmpc_transmit_skb(struct channel *ch, struct sk_buff *skb)
728 if (!nskb) { 728 if (!nskb) {
729 goto nomem_exit; 729 goto nomem_exit;
730 } else { 730 } else {
731 memcpy(skb_put(nskb, skb->len), skb->data, skb->len); 731 skb_put_data(nskb, skb->data, skb->len);
732 atomic_inc(&nskb->users); 732 atomic_inc(&nskb->users);
733 atomic_dec(&skb->users); 733 atomic_dec(&skb->users);
734 dev_kfree_skb_irq(skb); 734 dev_kfree_skb_irq(skb);
@@ -809,7 +809,7 @@ static int ctcmpc_transmit_skb(struct channel *ch, struct sk_buff *skb)
809 skb_reset_tail_pointer(ch->trans_skb); 809 skb_reset_tail_pointer(ch->trans_skb);
810 ch->trans_skb->len = 0; 810 ch->trans_skb->len = 0;
811 ch->ccw[1].count = skb->len; 811 ch->ccw[1].count = skb->len;
812 memcpy(skb_put(ch->trans_skb, skb->len), skb->data, skb->len); 812 skb_put_data(ch->trans_skb, skb->data, skb->len);
813 atomic_dec(&skb->users); 813 atomic_dec(&skb->users);
814 dev_kfree_skb_irq(skb); 814 dev_kfree_skb_irq(skb);
815 ccw_idx = 0; 815 ccw_idx = 0;
@@ -960,7 +960,7 @@ static int ctcmpc_tx(struct sk_buff *skb, struct net_device *dev)
960 } 960 }
961 newskb->protocol = skb->protocol; 961 newskb->protocol = skb->protocol;
962 skb_reserve(newskb, TH_HEADER_LENGTH + PDU_HEADER_LENGTH); 962 skb_reserve(newskb, TH_HEADER_LENGTH + PDU_HEADER_LENGTH);
963 memcpy(skb_put(newskb, skb->len), skb->data, skb->len); 963 skb_put_data(newskb, skb->data, skb->len);
964 dev_kfree_skb_any(skb); 964 dev_kfree_skb_any(skb);
965 skb = newskb; 965 skb = newskb;
966 } 966 }
diff --git a/drivers/s390/net/ctcm_mpc.c b/drivers/s390/net/ctcm_mpc.c
index c103fc7efe9f..f8be39634f03 100644
--- a/drivers/s390/net/ctcm_mpc.c
+++ b/drivers/s390/net/ctcm_mpc.c
@@ -667,7 +667,7 @@ static void ctcmpc_send_sweep_resp(struct channel *rch)
667 header->th.th_seq_num = 0x00; 667 header->th.th_seq_num = 0x00;
668 header->sw.th_last_seq = ch->th_seq_num; 668 header->sw.th_last_seq = ch->th_seq_num;
669 669
670 memcpy(skb_put(sweep_skb, TH_SWEEP_LENGTH), header, TH_SWEEP_LENGTH); 670 skb_put_data(sweep_skb, header, TH_SWEEP_LENGTH);
671 671
672 kfree(header); 672 kfree(header);
673 673
@@ -974,9 +974,8 @@ void mpc_channel_action(struct channel *ch, int direction, int action)
974 skb_reset_tail_pointer(ch->xid_skb); 974 skb_reset_tail_pointer(ch->xid_skb);
975 ch->xid_skb->len = 0; 975 ch->xid_skb->len = 0;
976 976
977 memcpy(skb_put(ch->xid_skb, grp->xid_skb->len), 977 skb_put_data(ch->xid_skb, grp->xid_skb->data,
978 grp->xid_skb->data, 978 grp->xid_skb->len);
979 grp->xid_skb->len);
980 979
981 ch->xid->xid2_dlc_type = 980 ch->xid->xid2_dlc_type =
982 ((CHANNEL_DIRECTION(ch->flags) == CTCM_READ) 981 ((CHANNEL_DIRECTION(ch->flags) == CTCM_READ)
@@ -1149,7 +1148,7 @@ static void ctcmpc_unpack_skb(struct channel *ch, struct sk_buff *pskb)
1149 fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 1148 fsm_event(grp->fsm, MPCG_EVENT_INOP, dev);
1150 goto done; 1149 goto done;
1151 } 1150 }
1152 memcpy(skb_put(skb, new_len), pskb->data, new_len); 1151 skb_put_data(skb, pskb->data, new_len);
1153 1152
1154 skb_reset_mac_header(skb); 1153 skb_reset_mac_header(skb);
1155 skb->dev = pskb->dev; 1154 skb->dev = pskb->dev;
@@ -1297,16 +1296,15 @@ struct mpc_group *ctcmpc_init_mpc_group(struct ctcm_priv *priv)
1297 /* base xid for all channels in group */ 1296 /* base xid for all channels in group */
1298 grp->xid_skb_data = grp->xid_skb->data; 1297 grp->xid_skb_data = grp->xid_skb->data;
1299 grp->xid_th = (struct th_header *)grp->xid_skb->data; 1298 grp->xid_th = (struct th_header *)grp->xid_skb->data;
1300 memcpy(skb_put(grp->xid_skb, TH_HEADER_LENGTH), 1299 skb_put_data(grp->xid_skb, &thnorm, TH_HEADER_LENGTH);
1301 &thnorm, TH_HEADER_LENGTH);
1302 1300
1303 grp->xid = (struct xid2 *)skb_tail_pointer(grp->xid_skb); 1301 grp->xid = (struct xid2 *)skb_tail_pointer(grp->xid_skb);
1304 memcpy(skb_put(grp->xid_skb, XID2_LENGTH), &init_xid, XID2_LENGTH); 1302 skb_put_data(grp->xid_skb, &init_xid, XID2_LENGTH);
1305 grp->xid->xid2_adj_id = jiffies | 0xfff00000; 1303 grp->xid->xid2_adj_id = jiffies | 0xfff00000;
1306 grp->xid->xid2_sender_id = jiffies; 1304 grp->xid->xid2_sender_id = jiffies;
1307 1305
1308 grp->xid_id = skb_tail_pointer(grp->xid_skb); 1306 grp->xid_id = skb_tail_pointer(grp->xid_skb);
1309 memcpy(skb_put(grp->xid_skb, 4), "VTAM", 4); 1307 skb_put_data(grp->xid_skb, "VTAM", 4);
1310 1308
1311 grp->rcvd_xid_skb = 1309 grp->rcvd_xid_skb =
1312 __dev_alloc_skb(MPC_BUFSIZE_DEFAULT, GFP_ATOMIC|GFP_DMA); 1310 __dev_alloc_skb(MPC_BUFSIZE_DEFAULT, GFP_ATOMIC|GFP_DMA);
@@ -1318,8 +1316,7 @@ struct mpc_group *ctcmpc_init_mpc_group(struct ctcm_priv *priv)
1318 } 1316 }
1319 grp->rcvd_xid_data = grp->rcvd_xid_skb->data; 1317 grp->rcvd_xid_data = grp->rcvd_xid_skb->data;
1320 grp->rcvd_xid_th = (struct th_header *)grp->rcvd_xid_skb->data; 1318 grp->rcvd_xid_th = (struct th_header *)grp->rcvd_xid_skb->data;
1321 memcpy(skb_put(grp->rcvd_xid_skb, TH_HEADER_LENGTH), 1319 skb_put_data(grp->rcvd_xid_skb, &thnorm, TH_HEADER_LENGTH);
1322 &thnorm, TH_HEADER_LENGTH);
1323 grp->saved_xid2 = NULL; 1320 grp->saved_xid2 = NULL;
1324 priv->xid = grp->xid; 1321 priv->xid = grp->xid;
1325 priv->mpcg = grp; 1322 priv->mpcg = grp;
@@ -1410,8 +1407,7 @@ static void mpc_action_go_inop(fsm_instance *fi, int event, void *arg)
1410 skb_reset_tail_pointer(grp->rcvd_xid_skb); 1407 skb_reset_tail_pointer(grp->rcvd_xid_skb);
1411 grp->rcvd_xid_skb->len = 0; 1408 grp->rcvd_xid_skb->len = 0;
1412 grp->rcvd_xid_th = (struct th_header *)grp->rcvd_xid_skb->data; 1409 grp->rcvd_xid_th = (struct th_header *)grp->rcvd_xid_skb->data;
1413 memcpy(skb_put(grp->rcvd_xid_skb, TH_HEADER_LENGTH), &thnorm, 1410 skb_put_data(grp->rcvd_xid_skb, &thnorm, TH_HEADER_LENGTH);
1414 TH_HEADER_LENGTH);
1415 1411
1416 if (grp->send_qllc_disc == 1) { 1412 if (grp->send_qllc_disc == 1) {
1417 grp->send_qllc_disc = 0; 1413 grp->send_qllc_disc = 0;
@@ -1590,8 +1586,7 @@ static int mpc_validate_xid(struct mpcg_info *mpcginfo)
1590 grp->saved_xid2 = 1586 grp->saved_xid2 =
1591 (struct xid2 *)skb_tail_pointer(grp->rcvd_xid_skb); 1587 (struct xid2 *)skb_tail_pointer(grp->rcvd_xid_skb);
1592 1588
1593 memcpy(skb_put(grp->rcvd_xid_skb, 1589 skb_put_data(grp->rcvd_xid_skb, xid, XID2_LENGTH);
1594 XID2_LENGTH), xid, XID2_LENGTH);
1595 grp->rcvd_xid_skb->data = grp->rcvd_xid_data; 1590 grp->rcvd_xid_skb->data = grp->rcvd_xid_data;
1596 1591
1597 skb_reset_tail_pointer(grp->rcvd_xid_skb); 1592 skb_reset_tail_pointer(grp->rcvd_xid_skb);
@@ -1908,17 +1903,15 @@ static void mpc_action_doxid7(fsm_instance *fsm, int event, void *arg)
1908 if (fsm_getstate(ch->fsm) == CH_XID7_PENDING1) { 1903 if (fsm_getstate(ch->fsm) == CH_XID7_PENDING1) {
1909 fsm_newstate(ch->fsm, CH_XID7_PENDING2); 1904 fsm_newstate(ch->fsm, CH_XID7_PENDING2);
1910 ch->ccw[8].cmd_code = CCW_CMD_SENSE_CMD; 1905 ch->ccw[8].cmd_code = CCW_CMD_SENSE_CMD;
1911 memcpy(skb_put(ch->xid_skb, 1906 skb_put_data(ch->xid_skb, &thdummy,
1912 TH_HEADER_LENGTH), 1907 TH_HEADER_LENGTH);
1913 &thdummy, TH_HEADER_LENGTH);
1914 send = 1; 1908 send = 1;
1915 } 1909 }
1916 } else if (fsm_getstate(ch->fsm) < CH_XID7_PENDING2) { 1910 } else if (fsm_getstate(ch->fsm) < CH_XID7_PENDING2) {
1917 fsm_newstate(ch->fsm, CH_XID7_PENDING2); 1911 fsm_newstate(ch->fsm, CH_XID7_PENDING2);
1918 ch->ccw[8].cmd_code = CCW_CMD_WRITE_CTL; 1912 ch->ccw[8].cmd_code = CCW_CMD_WRITE_CTL;
1919 memcpy(skb_put(ch->xid_skb, 1913 skb_put_data(ch->xid_skb, &thnorm,
1920 TH_HEADER_LENGTH), 1914 TH_HEADER_LENGTH);
1921 &thnorm, TH_HEADER_LENGTH);
1922 send = 1; 1915 send = 1;
1923 } 1916 }
1924 } else { 1917 } else {
@@ -1926,17 +1919,16 @@ static void mpc_action_doxid7(fsm_instance *fsm, int event, void *arg)
1926 if (grp->roll == YSIDE) { 1919 if (grp->roll == YSIDE) {
1927 if (fsm_getstate(ch->fsm) < CH_XID7_PENDING4) { 1920 if (fsm_getstate(ch->fsm) < CH_XID7_PENDING4) {
1928 fsm_newstate(ch->fsm, CH_XID7_PENDING4); 1921 fsm_newstate(ch->fsm, CH_XID7_PENDING4);
1929 memcpy(skb_put(ch->xid_skb, 1922 skb_put_data(ch->xid_skb, &thnorm,
1930 TH_HEADER_LENGTH), 1923 TH_HEADER_LENGTH);
1931 &thnorm, TH_HEADER_LENGTH);
1932 ch->ccw[8].cmd_code = CCW_CMD_WRITE_CTL; 1924 ch->ccw[8].cmd_code = CCW_CMD_WRITE_CTL;
1933 send = 1; 1925 send = 1;
1934 } 1926 }
1935 } else if (fsm_getstate(ch->fsm) == CH_XID7_PENDING3) { 1927 } else if (fsm_getstate(ch->fsm) == CH_XID7_PENDING3) {
1936 fsm_newstate(ch->fsm, CH_XID7_PENDING4); 1928 fsm_newstate(ch->fsm, CH_XID7_PENDING4);
1937 ch->ccw[8].cmd_code = CCW_CMD_SENSE_CMD; 1929 ch->ccw[8].cmd_code = CCW_CMD_SENSE_CMD;
1938 memcpy(skb_put(ch->xid_skb, TH_HEADER_LENGTH), 1930 skb_put_data(ch->xid_skb, &thdummy,
1939 &thdummy, TH_HEADER_LENGTH); 1931 TH_HEADER_LENGTH);
1940 send = 1; 1932 send = 1;
1941 } 1933 }
1942 } 1934 }
@@ -2122,7 +2114,7 @@ static int mpc_send_qllc_discontact(struct net_device *dev)
2122 return -ENOMEM; 2114 return -ENOMEM;
2123 } 2115 }
2124 2116
2125 memcpy(skb_put(skb, new_len), qllcptr, new_len); 2117 skb_put_data(skb, qllcptr, new_len);
2126 kfree(qllcptr); 2118 kfree(qllcptr);
2127 2119
2128 if (skb_headroom(skb) < 4) { 2120 if (skb_headroom(skb) < 4) {
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c
index 211b31d9f157..337bacb43d68 100644
--- a/drivers/s390/net/lcs.c
+++ b/drivers/s390/net/lcs.c
@@ -1796,7 +1796,7 @@ lcs_get_skb(struct lcs_card *card, char *skb_data, unsigned int skb_len)
1796 card->stats.rx_dropped++; 1796 card->stats.rx_dropped++;
1797 return; 1797 return;
1798 } 1798 }
1799 memcpy(skb_put(skb, skb_len), skb_data, skb_len); 1799 skb_put_data(skb, skb_data, skb_len);
1800 skb->protocol = card->lan_type_trans(skb, card->dev); 1800 skb->protocol = card->lan_type_trans(skb, card->dev);
1801 card->stats.rx_bytes += skb_len; 1801 card->stats.rx_bytes += skb_len;
1802 card->stats.rx_packets++; 1802 card->stats.rx_packets++;
diff --git a/drivers/s390/net/netiucv.c b/drivers/s390/net/netiucv.c
index fa732bd86729..7db427c0a6a4 100644
--- a/drivers/s390/net/netiucv.c
+++ b/drivers/s390/net/netiucv.c
@@ -759,8 +759,7 @@ static void conn_action_txdone(fsm_instance *fi, int event, void *arg)
759 spin_lock_irqsave(&conn->collect_lock, saveflags); 759 spin_lock_irqsave(&conn->collect_lock, saveflags);
760 while ((skb = skb_dequeue(&conn->collect_queue))) { 760 while ((skb = skb_dequeue(&conn->collect_queue))) {
761 header.next = conn->tx_buff->len + skb->len + NETIUCV_HDRLEN; 761 header.next = conn->tx_buff->len + skb->len + NETIUCV_HDRLEN;
762 memcpy(skb_put(conn->tx_buff, NETIUCV_HDRLEN), &header, 762 skb_put_data(conn->tx_buff, &header, NETIUCV_HDRLEN);
763 NETIUCV_HDRLEN);
764 skb_copy_from_linear_data(skb, 763 skb_copy_from_linear_data(skb,
765 skb_put(conn->tx_buff, skb->len), 764 skb_put(conn->tx_buff, skb->len),
766 skb->len); 765 skb->len);
@@ -780,7 +779,7 @@ static void conn_action_txdone(fsm_instance *fi, int event, void *arg)
780 } 779 }
781 780
782 header.next = 0; 781 header.next = 0;
783 memcpy(skb_put(conn->tx_buff, NETIUCV_HDRLEN), &header, NETIUCV_HDRLEN); 782 skb_put_data(conn->tx_buff, &header, NETIUCV_HDRLEN);
784 conn->prof.send_stamp = jiffies; 783 conn->prof.send_stamp = jiffies;
785 txmsg.class = 0; 784 txmsg.class = 0;
786 txmsg.tag = 0; 785 txmsg.tag = 0;
@@ -1201,8 +1200,7 @@ static int netiucv_transmit_skb(struct iucv_connection *conn,
1201 return rc; 1200 return rc;
1202 } else { 1201 } else {
1203 skb_reserve(nskb, NETIUCV_HDRLEN); 1202 skb_reserve(nskb, NETIUCV_HDRLEN);
1204 memcpy(skb_put(nskb, skb->len), 1203 skb_put_data(nskb, skb->data, skb->len);
1205 skb->data, skb->len);
1206 } 1204 }
1207 copied = 1; 1205 copied = 1;
1208 } 1206 }
@@ -1212,7 +1210,7 @@ static int netiucv_transmit_skb(struct iucv_connection *conn,
1212 header.next = nskb->len + NETIUCV_HDRLEN; 1210 header.next = nskb->len + NETIUCV_HDRLEN;
1213 memcpy(skb_push(nskb, NETIUCV_HDRLEN), &header, NETIUCV_HDRLEN); 1211 memcpy(skb_push(nskb, NETIUCV_HDRLEN), &header, NETIUCV_HDRLEN);
1214 header.next = 0; 1212 header.next = 0;
1215 memcpy(skb_put(nskb, NETIUCV_HDRLEN), &header, NETIUCV_HDRLEN); 1213 skb_put_data(nskb, &header, NETIUCV_HDRLEN);
1216 1214
1217 fsm_newstate(conn->fsm, CONN_STATE_TX); 1215 fsm_newstate(conn->fsm, CONN_STATE_TX);
1218 conn->prof.send_stamp = jiffies; 1216 conn->prof.send_stamp = jiffies;
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c
index 1fb92e870040..08338f27c82c 100644
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -5147,12 +5147,11 @@ static inline int qeth_create_skb_frag(struct qeth_qdio_buffer *qethbuffer,
5147 5147
5148 skb_reserve(*pskb, ETH_HLEN); 5148 skb_reserve(*pskb, ETH_HLEN);
5149 if (data_len <= QETH_RX_PULL_LEN) { 5149 if (data_len <= QETH_RX_PULL_LEN) {
5150 memcpy(skb_put(*pskb, data_len), element->addr + offset, 5150 skb_put_data(*pskb, element->addr + offset, data_len);
5151 data_len);
5152 } else { 5151 } else {
5153 get_page(page); 5152 get_page(page);
5154 memcpy(skb_put(*pskb, QETH_RX_PULL_LEN), 5153 skb_put_data(*pskb, element->addr + offset,
5155 element->addr + offset, QETH_RX_PULL_LEN); 5154 QETH_RX_PULL_LEN);
5156 skb_fill_page_desc(*pskb, *pfrag, page, 5155 skb_fill_page_desc(*pskb, *pfrag, page,
5157 offset + QETH_RX_PULL_LEN, 5156 offset + QETH_RX_PULL_LEN,
5158 data_len - QETH_RX_PULL_LEN); 5157 data_len - QETH_RX_PULL_LEN);
@@ -5248,8 +5247,7 @@ struct sk_buff *qeth_core_get_next_skb(struct qeth_card *card,
5248 &skb, offset, &frag, data_len)) 5247 &skb, offset, &frag, data_len))
5249 goto no_mem; 5248 goto no_mem;
5250 } else { 5249 } else {
5251 memcpy(skb_put(skb, data_len), data_ptr, 5250 skb_put_data(skb, data_ptr, data_len);
5252 data_len);
5253 } 5251 }
5254 } 5252 }
5255 skb_len -= data_len; 5253 skb_len -= data_len;
diff --git a/drivers/staging/gdm724x/gdm_lte.c b/drivers/staging/gdm724x/gdm_lte.c
index cf809987f79f..9ab6ce231f11 100644
--- a/drivers/staging/gdm724x/gdm_lte.c
+++ b/drivers/staging/gdm724x/gdm_lte.c
@@ -161,12 +161,9 @@ static int gdm_lte_emulate_arp(struct sk_buff *skb_in, u32 nic_type)
161 return -ENOMEM; 161 return -ENOMEM;
162 skb_reserve(skb_out, NET_IP_ALIGN); 162 skb_reserve(skb_out, NET_IP_ALIGN);
163 163
164 memcpy(skb_put(skb_out, mac_header_len), mac_header_data, 164 skb_put_data(skb_out, mac_header_data, mac_header_len);
165 mac_header_len); 165 skb_put_data(skb_out, arp_out, sizeof(struct arphdr));
166 memcpy(skb_put(skb_out, sizeof(struct arphdr)), arp_out, 166 skb_put_data(skb_out, arp_data_out, sizeof(struct arpdata));
167 sizeof(struct arphdr));
168 memcpy(skb_put(skb_out, sizeof(struct arpdata)), arp_data_out,
169 sizeof(struct arpdata));
170 167
171 skb_out->protocol = ((struct ethhdr *)mac_header_data)->h_proto; 168 skb_out->protocol = ((struct ethhdr *)mac_header_data)->h_proto;
172 skb_out->dev = skb_in->dev; 169 skb_out->dev = skb_in->dev;
@@ -322,14 +319,10 @@ static int gdm_lte_emulate_ndp(struct sk_buff *skb_in, u32 nic_type)
322 return -ENOMEM; 319 return -ENOMEM;
323 skb_reserve(skb_out, NET_IP_ALIGN); 320 skb_reserve(skb_out, NET_IP_ALIGN);
324 321
325 memcpy(skb_put(skb_out, mac_header_len), mac_header_data, 322 skb_put_data(skb_out, mac_header_data, mac_header_len);
326 mac_header_len); 323 skb_put_data(skb_out, &ipv6_out, sizeof(struct ipv6hdr));
327 memcpy(skb_put(skb_out, sizeof(struct ipv6hdr)), &ipv6_out, 324 skb_put_data(skb_out, &icmp6_out, sizeof(struct icmp6hdr));
328 sizeof(struct ipv6hdr)); 325 skb_put_data(skb_out, &na, sizeof(struct neighbour_advertisement));
329 memcpy(skb_put(skb_out, sizeof(struct icmp6hdr)), &icmp6_out,
330 sizeof(struct icmp6hdr));
331 memcpy(skb_put(skb_out, sizeof(struct neighbour_advertisement)), &na,
332 sizeof(struct neighbour_advertisement));
333 326
334 skb_out->protocol = ((struct ethhdr *)mac_header_data)->h_proto; 327 skb_out->protocol = ((struct ethhdr *)mac_header_data)->h_proto;
335 skb_out->dev = skb_in->dev; 328 skb_out->dev = skb_in->dev;
@@ -669,8 +662,8 @@ static void gdm_lte_netif_rx(struct net_device *dev, char *buf,
669 return; 662 return;
670 skb_reserve(skb, NET_IP_ALIGN); 663 skb_reserve(skb, NET_IP_ALIGN);
671 664
672 memcpy(skb_put(skb, mac_header_len), mac_header_data, mac_header_len); 665 skb_put_data(skb, mac_header_data, mac_header_len);
673 memcpy(skb_put(skb, len), buf, len); 666 skb_put_data(skb, buf, len);
674 667
675 skb->protocol = ((struct ethhdr *)mac_header_data)->h_proto; 668 skb->protocol = ((struct ethhdr *)mac_header_data)->h_proto;
676 skb->dev = dev; 669 skb->dev = dev;
diff --git a/drivers/staging/ks7010/ks_hostif.c b/drivers/staging/ks7010/ks_hostif.c
index 49e95426ac30..da801d3e0585 100644
--- a/drivers/staging/ks7010/ks_hostif.c
+++ b/drivers/staging/ks7010/ks_hostif.c
@@ -466,12 +466,12 @@ void hostif_data_indication(struct ks_wlan_private *priv)
466 DPRINTK(4, "SNAP, rx_ind_size = %d\n", rx_ind_size); 466 DPRINTK(4, "SNAP, rx_ind_size = %d\n", rx_ind_size);
467 467
468 size = ETH_ALEN * 2; 468 size = ETH_ALEN * 2;
469 memcpy(skb_put(skb, size), priv->rxp, size); 469 skb_put_data(skb, priv->rxp, size);
470 470
471 /* (SNAP+UI..) skip */ 471 /* (SNAP+UI..) skip */
472 472
473 size = rx_ind_size - (ETH_ALEN * 2); 473 size = rx_ind_size - (ETH_ALEN * 2);
474 memcpy(skb_put(skb, size), &eth_hdr->h_proto, size); 474 skb_put_data(skb, &eth_hdr->h_proto, size);
475 475
476 aa1x_hdr = (struct ieee802_1x_hdr *)(priv->rxp + ETHER_HDR_SIZE); 476 aa1x_hdr = (struct ieee802_1x_hdr *)(priv->rxp + ETHER_HDR_SIZE);
477 break; 477 break;
@@ -484,14 +484,13 @@ void hostif_data_indication(struct ks_wlan_private *priv)
484 } 484 }
485 DPRINTK(3, "NETBEUI/NetBIOS rx_ind_size=%d\n", rx_ind_size); 485 DPRINTK(3, "NETBEUI/NetBIOS rx_ind_size=%d\n", rx_ind_size);
486 486
487 memcpy(skb_put(skb, 12), priv->rxp, 12); /* 8802/FDDI MAC copy */ 487 skb_put_data(skb, priv->rxp, 12); /* 8802/FDDI MAC copy */
488 488
489 temp[0] = (((rx_ind_size - 12) >> 8) & 0xff); /* NETBEUI size add */ 489 temp[0] = (((rx_ind_size - 12) >> 8) & 0xff); /* NETBEUI size add */
490 temp[1] = ((rx_ind_size - 12) & 0xff); 490 temp[1] = ((rx_ind_size - 12) & 0xff);
491 memcpy(skb_put(skb, 2), temp, 2); 491 skb_put_data(skb, temp, 2);
492 492
493 memcpy(skb_put(skb, rx_ind_size - 14), priv->rxp + 12, 493 skb_put_data(skb, priv->rxp + 12, rx_ind_size - 14); /* copy after Type */
494 rx_ind_size - 14); /* copy after Type */
495 494
496 aa1x_hdr = (struct ieee802_1x_hdr *)(priv->rxp + 14); 495 aa1x_hdr = (struct ieee802_1x_hdr *)(priv->rxp + 14);
497 break; 496 break;
diff --git a/drivers/staging/most/aim-network/networking.c b/drivers/staging/most/aim-network/networking.c
index ce1764cba5f0..995674f25172 100644
--- a/drivers/staging/most/aim-network/networking.c
+++ b/drivers/staging/most/aim-network/networking.c
@@ -486,11 +486,11 @@ static int aim_rx_data(struct mbo *mbo)
486 ether_addr_copy(skb_put(skb, ETH_ALEN), dev->dev_addr); 486 ether_addr_copy(skb_put(skb, ETH_ALEN), dev->dev_addr);
487 487
488 /* src */ 488 /* src */
489 memcpy(skb_put(skb, 4), &zero, 4); 489 skb_put_data(skb, &zero, 4);
490 memcpy(skb_put(skb, 2), buf + 5, 2); 490 skb_put_data(skb, buf + 5, 2);
491 491
492 /* eth type */ 492 /* eth type */
493 memcpy(skb_put(skb, 2), buf + 10, 2); 493 skb_put_data(skb, buf + 10, 2);
494 494
495 buf += MDP_HDR_LEN; 495 buf += MDP_HDR_LEN;
496 len -= MDP_HDR_LEN; 496 len -= MDP_HDR_LEN;
@@ -499,7 +499,7 @@ static int aim_rx_data(struct mbo *mbo)
499 len -= MEP_HDR_LEN; 499 len -= MEP_HDR_LEN;
500 } 500 }
501 501
502 memcpy(skb_put(skb, len), buf, len); 502 skb_put_data(skb, buf, len);
503 skb->protocol = eth_type_trans(skb, dev); 503 skb->protocol = eth_type_trans(skb, dev);
504 skb_len = skb->len; 504 skb_len = skb->len;
505 if (netif_rx(skb) == NET_RX_SUCCESS) { 505 if (netif_rx(skb) == NET_RX_SUCCESS) {
diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/ethernet-rx.c
index 65a285631994..72baedefa0f1 100644
--- a/drivers/staging/octeon/ethernet-rx.c
+++ b/drivers/staging/octeon/ethernet-rx.c
@@ -287,8 +287,7 @@ static int cvm_oct_poll(struct oct_rx_group *rx_group, int budget)
287 else 287 else
288 ptr += 6; 288 ptr += 6;
289 } 289 }
290 memcpy(skb_put(skb, work->word1.len), ptr, 290 skb_put_data(skb, ptr, work->word1.len);
291 work->word1.len);
292 /* No packet buffers to free */ 291 /* No packet buffers to free */
293 } else { 292 } else {
294 int segments = work->word2.s.bufs; 293 int segments = work->word2.s.bufs;
@@ -323,10 +322,9 @@ static int cvm_oct_poll(struct oct_rx_group *rx_group, int budget)
323 if (segment_size > len) 322 if (segment_size > len)
324 segment_size = len; 323 segment_size = len;
325 /* Copy the data into the packet */ 324 /* Copy the data into the packet */
326 memcpy(skb_put(skb, segment_size), 325 skb_put_data(skb,
327 cvmx_phys_to_ptr( 326 cvmx_phys_to_ptr(segment_ptr.s.addr),
328 segment_ptr.s.addr), 327 segment_size);
329 segment_size);
330 len -= segment_size; 328 len -= segment_size;
331 segment_ptr = next_ptr; 329 segment_ptr = next_ptr;
332 } 330 }
diff --git a/drivers/staging/rtl8188eu/core/rtw_recv.c b/drivers/staging/rtl8188eu/core/rtw_recv.c
index c6c4404e717b..14173cf6e1e7 100644
--- a/drivers/staging/rtl8188eu/core/rtw_recv.c
+++ b/drivers/staging/rtl8188eu/core/rtw_recv.c
@@ -1544,8 +1544,8 @@ static int amsdu_to_msdu(struct adapter *padapter, struct recv_frame *prframe)
1544 sub_skb = dev_alloc_skb(nSubframe_Length + 12); 1544 sub_skb = dev_alloc_skb(nSubframe_Length + 12);
1545 if (sub_skb) { 1545 if (sub_skb) {
1546 skb_reserve(sub_skb, 12); 1546 skb_reserve(sub_skb, 12);
1547 data_ptr = (u8 *)skb_put(sub_skb, nSubframe_Length); 1547 data_ptr = skb_put_data(sub_skb, pdata,
1548 memcpy(data_ptr, pdata, nSubframe_Length); 1548 nSubframe_Length);
1549 } else { 1549 } else {
1550 sub_skb = skb_clone(prframe->pkt, GFP_ATOMIC); 1550 sub_skb = skb_clone(prframe->pkt, GFP_ATOMIC);
1551 if (sub_skb) { 1551 if (sub_skb) {
diff --git a/drivers/staging/rtl8188eu/os_dep/mon.c b/drivers/staging/rtl8188eu/os_dep/mon.c
index 859d0d6051cd..225c23fc69dc 100644
--- a/drivers/staging/rtl8188eu/os_dep/mon.c
+++ b/drivers/staging/rtl8188eu/os_dep/mon.c
@@ -53,7 +53,7 @@ static void mon_recv_decrypted(struct net_device *dev, const u8 *data,
53 skb = netdev_alloc_skb(dev, data_len); 53 skb = netdev_alloc_skb(dev, data_len);
54 if (!skb) 54 if (!skb)
55 return; 55 return;
56 memcpy(skb_put(skb, data_len), data, data_len); 56 skb_put_data(skb, data, data_len);
57 57
58 /* 58 /*
59 * Frame data is not encrypted. Strip off protection so 59 * Frame data is not encrypted. Strip off protection so
diff --git a/drivers/staging/rtl8192e/rtllib_rx.c b/drivers/staging/rtl8192e/rtllib_rx.c
index 43a77745e6fb..bae98ca0a9b6 100644
--- a/drivers/staging/rtl8192e/rtllib_rx.c
+++ b/drivers/staging/rtl8192e/rtllib_rx.c
@@ -817,8 +817,7 @@ static u8 parse_subframe(struct rtllib_device *ieee, struct sk_buff *skb,
817 if (!sub_skb) 817 if (!sub_skb)
818 return 0; 818 return 0;
819 skb_reserve(sub_skb, 12); 819 skb_reserve(sub_skb, 12);
820 data_ptr = (u8 *)skb_put(sub_skb, skb->len); 820 data_ptr = skb_put_data(sub_skb, skb->data, skb->len);
821 memcpy(data_ptr, skb->data, skb->len);
822 sub_skb->dev = ieee->dev; 821 sub_skb->dev = ieee->dev;
823 822
824 rxb->subframes[0] = sub_skb; 823 rxb->subframes[0] = sub_skb;
@@ -870,8 +869,7 @@ static u8 parse_subframe(struct rtllib_device *ieee, struct sk_buff *skb,
870 if (!sub_skb) 869 if (!sub_skb)
871 return 0; 870 return 0;
872 skb_reserve(sub_skb, 12); 871 skb_reserve(sub_skb, 12);
873 data_ptr = (u8 *)skb_put(sub_skb, nSubframe_Length); 872 data_ptr = skb_put_data(sub_skb, skb->data, nSubframe_Length);
874 memcpy(data_ptr, skb->data, nSubframe_Length);
875 873
876 sub_skb->dev = ieee->dev; 874 sub_skb->dev = ieee->dev;
877 rxb->subframes[rxb->nr_subframes++] = sub_skb; 875 rxb->subframes[rxb->nr_subframes++] = sub_skb;
@@ -1141,13 +1139,12 @@ static int rtllib_rx_decrypt(struct rtllib_device *ieee, struct sk_buff *skb,
1141 /* copy first fragment (including full headers) into 1139 /* copy first fragment (including full headers) into
1142 * beginning of the fragment cache skb 1140 * beginning of the fragment cache skb
1143 */ 1141 */
1144 memcpy(skb_put(frag_skb, flen), skb->data, flen); 1142 skb_put_data(frag_skb, skb->data, flen);
1145 } else { 1143 } else {
1146 /* append frame payload to the end of the fragment 1144 /* append frame payload to the end of the fragment
1147 * cache skb 1145 * cache skb
1148 */ 1146 */
1149 memcpy(skb_put(frag_skb, flen), skb->data + hdrlen, 1147 skb_put_data(frag_skb, skb->data + hdrlen, flen);
1150 flen);
1151 } 1148 }
1152 dev_kfree_skb_any(skb); 1149 dev_kfree_skb_any(skb);
1153 skb = NULL; 1150 skb = NULL;
diff --git a/drivers/staging/rtl8192e/rtllib_softmac.c b/drivers/staging/rtl8192e/rtllib_softmac.c
index eeda17d6409b..60d07d0bb4eb 100644
--- a/drivers/staging/rtl8192e/rtllib_softmac.c
+++ b/drivers/staging/rtl8192e/rtllib_softmac.c
@@ -1272,8 +1272,7 @@ rtllib_association_req(struct rtllib_network *beacon,
1272 hdr->info_element[0].id = MFIE_TYPE_SSID; 1272 hdr->info_element[0].id = MFIE_TYPE_SSID;
1273 1273
1274 hdr->info_element[0].len = beacon->ssid_len; 1274 hdr->info_element[0].len = beacon->ssid_len;
1275 tag = skb_put(skb, beacon->ssid_len); 1275 tag = skb_put_data(skb, beacon->ssid, beacon->ssid_len);
1276 memcpy(tag, beacon->ssid, beacon->ssid_len);
1277 1276
1278 tag = skb_put(skb, rate_len); 1277 tag = skb_put(skb, rate_len);
1279 1278
@@ -1349,8 +1348,7 @@ rtllib_association_req(struct rtllib_network *beacon,
1349 } 1348 }
1350 1349
1351 if (wpa_ie_len) { 1350 if (wpa_ie_len) {
1352 tag = skb_put(skb, ieee->wpa_ie_len); 1351 tag = skb_put_data(skb, ieee->wpa_ie, ieee->wpa_ie_len);
1353 memcpy(tag, ieee->wpa_ie, ieee->wpa_ie_len);
1354 1352
1355 if (PMKCacheIdx >= 0) { 1353 if (PMKCacheIdx >= 0) {
1356 tag = skb_put(skb, 18); 1354 tag = skb_put(skb, 18);
@@ -1366,8 +1364,7 @@ rtllib_association_req(struct rtllib_network *beacon,
1366 } 1364 }
1367 1365
1368 if (wps_ie_len && ieee->wps_ie) { 1366 if (wps_ie_len && ieee->wps_ie) {
1369 tag = skb_put(skb, wps_ie_len); 1367 tag = skb_put_data(skb, ieee->wps_ie, wps_ie_len);
1370 memcpy(tag, ieee->wps_ie, wps_ie_len);
1371 } 1368 }
1372 1369
1373 tag = skb_put(skb, turbo_info_len); 1370 tag = skb_put(skb, turbo_info_len);
diff --git a/drivers/staging/rtl8192e/rtllib_tx.c b/drivers/staging/rtl8192e/rtllib_tx.c
index 78a3ad5b231f..fc88d47dea43 100644
--- a/drivers/staging/rtl8192e/rtllib_tx.c
+++ b/drivers/staging/rtl8192e/rtllib_tx.c
@@ -624,8 +624,7 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
624 624
625 txb->encrypted = 0; 625 txb->encrypted = 0;
626 txb->payload_size = cpu_to_le16(skb->len); 626 txb->payload_size = cpu_to_le16(skb->len);
627 memcpy(skb_put(txb->fragments[0], skb->len), skb->data, 627 skb_put_data(txb->fragments[0], skb->data, skb->len);
628 skb->len);
629 628
630 goto success; 629 goto success;
631 } 630 }
@@ -818,9 +817,7 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
818 } else { 817 } else {
819 tcb_desc->bHwSec = 0; 818 tcb_desc->bHwSec = 0;
820 } 819 }
821 frag_hdr = (struct rtllib_hdr_3addrqos *) 820 frag_hdr = skb_put_data(skb_frag, &header, hdr_len);
822 skb_put(skb_frag, hdr_len);
823 memcpy(frag_hdr, &header, hdr_len);
824 821
825 /* If this is not the last fragment, then add the 822 /* If this is not the last fragment, then add the
826 * MOREFRAGS bit to the frame control 823 * MOREFRAGS bit to the frame control
@@ -852,7 +849,7 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
852 bytes -= SNAP_SIZE + sizeof(u16); 849 bytes -= SNAP_SIZE + sizeof(u16);
853 } 850 }
854 851
855 memcpy(skb_put(skb_frag, bytes), skb->data, bytes); 852 skb_put_data(skb_frag, skb->data, bytes);
856 853
857 /* Advance the SKB... */ 854 /* Advance the SKB... */
858 skb_pull(skb, bytes); 855 skb_pull(skb, bytes);
@@ -895,8 +892,7 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
895 892
896 txb->encrypted = 0; 893 txb->encrypted = 0;
897 txb->payload_size = cpu_to_le16(skb->len); 894 txb->payload_size = cpu_to_le16(skb->len);
898 memcpy(skb_put(txb->fragments[0], skb->len), skb->data, 895 skb_put_data(txb->fragments[0], skb->data, skb->len);
899 skb->len);
900 } 896 }
901 897
902 success: 898 success:
diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c
index 7a31510f0524..c0e2f711cb4e 100644
--- a/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c
+++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c
@@ -848,8 +848,8 @@ static u8 parse_subframe(struct sk_buff *skb,
848 if (!sub_skb) 848 if (!sub_skb)
849 return 0; 849 return 0;
850 skb_reserve(sub_skb, 12); 850 skb_reserve(sub_skb, 12);
851 data_ptr = (u8 *)skb_put(sub_skb, nSubframe_Length); 851 data_ptr = skb_put_data(sub_skb, skb->data,
852 memcpy(data_ptr, skb->data, nSubframe_Length); 852 nSubframe_Length);
853#endif 853#endif
854 rxb->subframes[rxb->nr_subframes++] = sub_skb; 854 rxb->subframes[rxb->nr_subframes++] = sub_skb;
855 if (rxb->nr_subframes >= MAX_SUBFRAME_COUNT) { 855 if (rxb->nr_subframes >= MAX_SUBFRAME_COUNT) {
@@ -1180,12 +1180,11 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
1180 if (frag == 0) { 1180 if (frag == 0) {
1181 /* copy first fragment (including full headers) into 1181 /* copy first fragment (including full headers) into
1182 * beginning of the fragment cache skb */ 1182 * beginning of the fragment cache skb */
1183 memcpy(skb_put(frag_skb, flen), skb->data, flen); 1183 skb_put_data(frag_skb, skb->data, flen);
1184 } else { 1184 } else {
1185 /* append frame payload to the end of the fragment 1185 /* append frame payload to the end of the fragment
1186 * cache skb */ 1186 * cache skb */
1187 memcpy(skb_put(frag_skb, flen), skb->data + hdrlen, 1187 skb_put_data(frag_skb, skb->data + hdrlen, flen);
1188 flen);
1189 } 1188 }
1190 dev_kfree_skb_any(skb); 1189 dev_kfree_skb_any(skb);
1191 skb = NULL; 1190 skb = NULL;
diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
index 14aea26804f4..903a1d0269df 100644
--- a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
+++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
@@ -1115,8 +1115,7 @@ ieee80211_association_req(struct ieee80211_network *beacon,
1115 hdr->info_element[0].id = MFIE_TYPE_SSID; 1115 hdr->info_element[0].id = MFIE_TYPE_SSID;
1116 1116
1117 hdr->info_element[0].len = beacon->ssid_len; 1117 hdr->info_element[0].len = beacon->ssid_len;
1118 tag = skb_put(skb, beacon->ssid_len); 1118 tag = skb_put_data(skb, beacon->ssid, beacon->ssid_len);
1119 memcpy(tag, beacon->ssid, beacon->ssid_len);
1120 1119
1121 tag = skb_put(skb, rate_len); 1120 tag = skb_put(skb, rate_len);
1122 1121
diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_tx.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_tx.c
index bdb96a45a9eb..f58971a4a2e3 100644
--- a/drivers/staging/rtl8192u/ieee80211/ieee80211_tx.c
+++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_tx.c
@@ -794,8 +794,7 @@ int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev)
794 { 794 {
795 tcb_desc->bHwSec = 0; 795 tcb_desc->bHwSec = 0;
796 } 796 }
797 frag_hdr = (struct rtl_80211_hdr_3addrqos *)skb_put(skb_frag, hdr_len); 797 frag_hdr = skb_put_data(skb_frag, &header, hdr_len);
798 memcpy(frag_hdr, &header, hdr_len);
799 798
800 /* If this is not the last fragment, then add the MOREFRAGS 799 /* If this is not the last fragment, then add the MOREFRAGS
801 * bit to the frame control 800 * bit to the frame control
@@ -826,7 +825,7 @@ int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev)
826 bytes -= SNAP_SIZE + sizeof(u16); 825 bytes -= SNAP_SIZE + sizeof(u16);
827 } 826 }
828 827
829 memcpy(skb_put(skb_frag, bytes), skb->data, bytes); 828 skb_put_data(skb_frag, skb->data, bytes);
830 829
831 /* Advance the SKB... */ 830 /* Advance the SKB... */
832 skb_pull(skb, bytes); 831 skb_pull(skb, bytes);
@@ -869,7 +868,7 @@ int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev)
869 868
870 txb->encrypted = 0; 869 txb->encrypted = 0;
871 txb->payload_size = __cpu_to_le16(skb->len); 870 txb->payload_size = __cpu_to_le16(skb->len);
872 memcpy(skb_put(txb->fragments[0],skb->len), skb->data, skb->len); 871 skb_put_data(txb->fragments[0], skb->data, skb->len);
873 } 872 }
874 873
875 success: 874 success:
diff --git a/drivers/staging/rtl8192u/r819xU_cmdpkt.c b/drivers/staging/rtl8192u/r819xU_cmdpkt.c
index bb6d8bd6c7ac..c3cf01c842a3 100644
--- a/drivers/staging/rtl8192u/r819xU_cmdpkt.c
+++ b/drivers/staging/rtl8192u/r819xU_cmdpkt.c
@@ -45,8 +45,7 @@ rt_status SendTxCommandPacket(struct net_device *dev, void *pData, u32 DataLen)
45 tcb_desc->bCmdOrInit = DESC_PACKET_TYPE_NORMAL; 45 tcb_desc->bCmdOrInit = DESC_PACKET_TYPE_NORMAL;
46 tcb_desc->bLastIniPkt = 0; 46 tcb_desc->bLastIniPkt = 0;
47 skb_reserve(skb, USB_HWDESC_HEADER_LEN); 47 skb_reserve(skb, USB_HWDESC_HEADER_LEN);
48 ptr_buf = skb_put(skb, DataLen); 48 ptr_buf = skb_put_data(skb, pData, DataLen);
49 memcpy(ptr_buf, pData, DataLen);
50 tcb_desc->txbuf_size = (u16)DataLen; 49 tcb_desc->txbuf_size = (u16)DataLen;
51 50
52 if (!priv->ieee80211->check_nic_enough_desc(dev, tcb_desc->queue_index) || 51 if (!priv->ieee80211->check_nic_enough_desc(dev, tcb_desc->queue_index) ||
diff --git a/drivers/staging/rtl8712/rtl8712_recv.c b/drivers/staging/rtl8712/rtl8712_recv.c
index 266ffefd55ed..f96c558b3c6a 100644
--- a/drivers/staging/rtl8712/rtl8712_recv.c
+++ b/drivers/staging/rtl8712/rtl8712_recv.c
@@ -372,8 +372,7 @@ static int amsdu_to_msdu(struct _adapter *padapter, union recv_frame *prframe)
372 if (!sub_skb) 372 if (!sub_skb)
373 break; 373 break;
374 skb_reserve(sub_skb, 12); 374 skb_reserve(sub_skb, 12);
375 data_ptr = (u8 *)skb_put(sub_skb, nSubframe_Length); 375 data_ptr = skb_put_data(sub_skb, pdata, nSubframe_Length);
376 memcpy(data_ptr, pdata, nSubframe_Length);
377 subframes[nr_subframes++] = sub_skb; 376 subframes[nr_subframes++] = sub_skb;
378 if (nr_subframes >= MAX_SUBFRAME_COUNT) { 377 if (nr_subframes >= MAX_SUBFRAME_COUNT) {
379 netdev_warn(padapter->pnetdev, "r8712u: ParseSubframe(): Too many Subframes! Packets dropped!\n"); 378 netdev_warn(padapter->pnetdev, "r8712u: ParseSubframe(): Too many Subframes! Packets dropped!\n");
diff --git a/drivers/staging/rtl8723bs/os_dep/recv_linux.c b/drivers/staging/rtl8723bs/os_dep/recv_linux.c
index e731ab4e2bd7..1a6443dc3ff0 100644
--- a/drivers/staging/rtl8723bs/os_dep/recv_linux.c
+++ b/drivers/staging/rtl8723bs/os_dep/recv_linux.c
@@ -82,8 +82,8 @@ _pkt *rtw_os_alloc_msdu_pkt(union recv_frame *prframe, u16 nSubframe_Length, u8
82 if (sub_skb) 82 if (sub_skb)
83 { 83 {
84 skb_reserve(sub_skb, 12); 84 skb_reserve(sub_skb, 12);
85 data_ptr = (u8 *)skb_put(sub_skb, nSubframe_Length); 85 data_ptr = skb_put_data(sub_skb, (pdata + ETH_HLEN),
86 memcpy(data_ptr, (pdata + ETH_HLEN), nSubframe_Length); 86 nSubframe_Length);
87 } 87 }
88 else 88 else
89 { 89 {
diff --git a/drivers/staging/wilc1000/linux_mon.c b/drivers/staging/wilc1000/linux_mon.c
index c9782d452b07..dbc266a37974 100644
--- a/drivers/staging/wilc1000/linux_mon.c
+++ b/drivers/staging/wilc1000/linux_mon.c
@@ -72,7 +72,7 @@ void WILC_WFI_monitor_rx(u8 *buff, u32 size)
72 if (!skb) 72 if (!skb)
73 return; 73 return;
74 74
75 memcpy(skb_put(skb, size), buff, size); 75 skb_put_data(skb, buff, size);
76 76
77 cb_hdr = (struct wilc_wfi_radiotap_cb_hdr *)skb_push(skb, sizeof(*cb_hdr)); 77 cb_hdr = (struct wilc_wfi_radiotap_cb_hdr *)skb_push(skb, sizeof(*cb_hdr));
78 memset(cb_hdr, 0, sizeof(struct wilc_wfi_radiotap_cb_hdr)); 78 memset(cb_hdr, 0, sizeof(struct wilc_wfi_radiotap_cb_hdr));
@@ -100,7 +100,7 @@ void WILC_WFI_monitor_rx(u8 *buff, u32 size)
100 if (!skb) 100 if (!skb)
101 return; 101 return;
102 102
103 memcpy(skb_put(skb, size), buff, size); 103 skb_put_data(skb, buff, size);
104 hdr = (struct wilc_wfi_radiotap_hdr *)skb_push(skb, sizeof(*hdr)); 104 hdr = (struct wilc_wfi_radiotap_hdr *)skb_push(skb, sizeof(*hdr));
105 memset(hdr, 0, sizeof(struct wilc_wfi_radiotap_hdr)); 105 memset(hdr, 0, sizeof(struct wilc_wfi_radiotap_hdr));
106 hdr->hdr.it_version = 0; /* PKTHDR_RADIOTAP_VERSION; */ 106 hdr->hdr.it_version = 0; /* PKTHDR_RADIOTAP_VERSION; */
@@ -200,7 +200,7 @@ static netdev_tx_t WILC_WFI_mon_xmit(struct sk_buff *skb,
200 if (!skb2) 200 if (!skb2)
201 return -ENOMEM; 201 return -ENOMEM;
202 202
203 memcpy(skb_put(skb2, skb->len), skb->data, skb->len); 203 skb_put_data(skb2, skb->data, skb->len);
204 204
205 cb_hdr = (struct wilc_wfi_radiotap_cb_hdr *)skb_push(skb2, sizeof(*cb_hdr)); 205 cb_hdr = (struct wilc_wfi_radiotap_cb_hdr *)skb_push(skb2, sizeof(*cb_hdr));
206 memset(cb_hdr, 0, sizeof(struct wilc_wfi_radiotap_cb_hdr)); 206 memset(cb_hdr, 0, sizeof(struct wilc_wfi_radiotap_cb_hdr));
diff --git a/drivers/staging/wilc1000/linux_wlan.c b/drivers/staging/wilc1000/linux_wlan.c
index d6d803416be2..f36598a89ce0 100644
--- a/drivers/staging/wilc1000/linux_wlan.c
+++ b/drivers/staging/wilc1000/linux_wlan.c
@@ -1160,7 +1160,7 @@ void wilc_frmw_to_linux(struct wilc *wilc, u8 *buff, u32 size, u32 pkt_offset)
1160 1160
1161 skb->dev = wilc_netdev; 1161 skb->dev = wilc_netdev;
1162 1162
1163 memcpy(skb_put(skb, frame_len), buff_to_send, frame_len); 1163 skb_put_data(skb, buff_to_send, frame_len);
1164 1164
1165 skb->protocol = eth_type_trans(skb, wilc_netdev); 1165 skb->protocol = eth_type_trans(skb, wilc_netdev);
1166 vif->netstats.rx_packets++; 1166 vif->netstats.rx_packets++;
diff --git a/drivers/staging/wlan-ng/hfa384x_usb.c b/drivers/staging/wlan-ng/hfa384x_usb.c
index a812e55ba1b0..1de67f209f2c 100644
--- a/drivers/staging/wlan-ng/hfa384x_usb.c
+++ b/drivers/staging/wlan-ng/hfa384x_usb.c
@@ -3530,13 +3530,11 @@ static void hfa384x_int_rxmonitor(struct wlandevice *wlandev,
3530 /* Copy the 802.11 header to the skb 3530 /* Copy the 802.11 header to the skb
3531 * (ctl frames may be less than a full header) 3531 * (ctl frames may be less than a full header)
3532 */ 3532 */
3533 datap = skb_put(skb, hdrlen); 3533 datap = skb_put_data(skb, &rxdesc->frame_control, hdrlen);
3534 memcpy(datap, &rxdesc->frame_control, hdrlen);
3535 3534
3536 /* If any, copy the data from the card to the skb */ 3535 /* If any, copy the data from the card to the skb */
3537 if (datalen > 0) { 3536 if (datalen > 0) {
3538 datap = skb_put(skb, datalen); 3537 datap = skb_put_data(skb, rxfrm->data, datalen);
3539 memcpy(datap, rxfrm->data, datalen);
3540 3538
3541 /* check for unencrypted stuff if WEP bit set. */ 3539 /* check for unencrypted stuff if WEP bit set. */
3542 if (*(datap - hdrlen + 1) & 0x40) /* wep set */ 3540 if (*(datap - hdrlen + 1) & 0x40) /* wep set */
diff --git a/drivers/tty/ipwireless/network.c b/drivers/tty/ipwireless/network.c
index c0dfb642383b..c2f9a3263b37 100644
--- a/drivers/tty/ipwireless/network.c
+++ b/drivers/tty/ipwireless/network.c
@@ -355,7 +355,7 @@ static struct sk_buff *ipw_packet_received_skb(unsigned char *data,
355 if (skb == NULL) 355 if (skb == NULL)
356 return NULL; 356 return NULL;
357 skb_reserve(skb, 2); 357 skb_reserve(skb, 2);
358 memcpy(skb_put(skb, length), data, length); 358 skb_put_data(skb, data, length);
359 359
360 return skb; 360 return skb;
361} 361}
diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
index 2667a205a5ab..da830f833392 100644
--- a/drivers/tty/n_gsm.c
+++ b/drivers/tty/n_gsm.c
@@ -2688,7 +2688,7 @@ static void gsm_mux_rx_netchar(struct gsm_dlci *dlci,
2688 return; 2688 return;
2689 } 2689 }
2690 skb_reserve(skb, NET_IP_ALIGN); 2690 skb_reserve(skb, NET_IP_ALIGN);
2691 memcpy(skb_put(skb, size), in_buf, size); 2691 skb_put_data(skb, in_buf, size);
2692 2692
2693 skb->dev = net; 2693 skb->dev = net;
2694 skb->protocol = htons(ETH_P_IP); 2694 skb->protocol = htons(ETH_P_IP);
diff --git a/drivers/tty/synclink.c b/drivers/tty/synclink.c
index a2c308f7d637..3fafc5a1b2e0 100644
--- a/drivers/tty/synclink.c
+++ b/drivers/tty/synclink.c
@@ -7960,7 +7960,7 @@ static void hdlcdev_rx(struct mgsl_struct *info, char *buf, int size)
7960 return; 7960 return;
7961 } 7961 }
7962 7962
7963 memcpy(skb_put(skb, size), buf, size); 7963 skb_put_data(skb, buf, size);
7964 7964
7965 skb->protocol = hdlc_type_trans(skb, dev); 7965 skb->protocol = hdlc_type_trans(skb, dev);
7966 7966
diff --git a/drivers/tty/synclink_gt.c b/drivers/tty/synclink_gt.c
index 31885f20fc15..7e947ecf15f1 100644
--- a/drivers/tty/synclink_gt.c
+++ b/drivers/tty/synclink_gt.c
@@ -1755,7 +1755,7 @@ static void hdlcdev_rx(struct slgt_info *info, char *buf, int size)
1755 return; 1755 return;
1756 } 1756 }
1757 1757
1758 memcpy(skb_put(skb, size), buf, size); 1758 skb_put_data(skb, buf, size);
1759 1759
1760 skb->protocol = hdlc_type_trans(skb, dev); 1760 skb->protocol = hdlc_type_trans(skb, dev);
1761 1761
diff --git a/drivers/tty/synclinkmp.c b/drivers/tty/synclinkmp.c
index 51e8846cd68f..9b4fb0251c1a 100644
--- a/drivers/tty/synclinkmp.c
+++ b/drivers/tty/synclinkmp.c
@@ -1874,7 +1874,7 @@ static void hdlcdev_rx(SLMP_INFO *info, char *buf, int size)
1874 return; 1874 return;
1875 } 1875 }
1876 1876
1877 memcpy(skb_put(skb, size), buf, size); 1877 skb_put_data(skb, buf, size);
1878 1878
1879 skb->protocol = hdlc_type_trans(skb, dev); 1879 skb->protocol = hdlc_type_trans(skb, dev);
1880 1880
diff --git a/drivers/usb/gadget/function/f_ncm.c b/drivers/usb/gadget/function/f_ncm.c
index 2882c6d3ae66..630616aaa861 100644
--- a/drivers/usb/gadget/function/f_ncm.c
+++ b/drivers/usb/gadget/function/f_ncm.c
@@ -1007,8 +1007,8 @@ static struct sk_buff *package_for_tx(struct f_ncm *ncm)
1007 ntb_iter = skb_put_zero(skb2, ndp_pad); 1007 ntb_iter = skb_put_zero(skb2, ndp_pad);
1008 1008
1009 /* Copy NTB across. */ 1009 /* Copy NTB across. */
1010 ntb_iter = (void *) skb_put(skb2, ncm->skb_tx_ndp->len); 1010 ntb_iter = skb_put_data(skb2, ncm->skb_tx_ndp->data,
1011 memcpy(ntb_iter, ncm->skb_tx_ndp->data, ncm->skb_tx_ndp->len); 1011 ncm->skb_tx_ndp->len);
1012 dev_consume_skb_any(ncm->skb_tx_ndp); 1012 dev_consume_skb_any(ncm->skb_tx_ndp);
1013 ncm->skb_tx_ndp = NULL; 1013 ncm->skb_tx_ndp = NULL;
1014 1014
@@ -1129,8 +1129,7 @@ static struct sk_buff *ncm_wrap_ntb(struct gether *port,
1129 1129
1130 /* Add the new data to the skb */ 1130 /* Add the new data to the skb */
1131 ntb_data = skb_put_zero(ncm->skb_tx_data, dgram_pad); 1131 ntb_data = skb_put_zero(ncm->skb_tx_data, dgram_pad);
1132 ntb_data = (void *) skb_put(ncm->skb_tx_data, skb->len); 1132 ntb_data = skb_put_data(ncm->skb_tx_data, skb->data, skb->len);
1133 memcpy(ntb_data, skb->data, skb->len);
1134 dev_consume_skb_any(skb); 1133 dev_consume_skb_any(skb);
1135 skb = NULL; 1134 skb = NULL;
1136 1135
@@ -1313,8 +1312,8 @@ static int ncm_unwrap_ntb(struct gether *port,
1313 dg_len - crc_len); 1312 dg_len - crc_len);
1314 if (skb2 == NULL) 1313 if (skb2 == NULL)
1315 goto err; 1314 goto err;
1316 memcpy(skb_put(skb2, dg_len - crc_len), 1315 skb_put_data(skb2, skb->data + index,
1317 skb->data + index, dg_len - crc_len); 1316 dg_len - crc_len);
1318 1317
1319 skb_queue_tail(list, skb2); 1318 skb_queue_tail(list, skb2);
1320 1319
diff --git a/drivers/usb/gadget/function/f_phonet.c b/drivers/usb/gadget/function/f_phonet.c
index 6a1ce6a55158..9c4c58e4a1a2 100644
--- a/drivers/usb/gadget/function/f_phonet.c
+++ b/drivers/usb/gadget/function/f_phonet.c
@@ -336,7 +336,7 @@ static void pn_rx_complete(struct usb_ep *ep, struct usb_request *req)
336 skb->protocol = htons(ETH_P_PHONET); 336 skb->protocol = htons(ETH_P_PHONET);
337 skb_reset_mac_header(skb); 337 skb_reset_mac_header(skb);
338 /* Can't use pskb_pull() on page in IRQ */ 338 /* Can't use pskb_pull() on page in IRQ */
339 memcpy(skb_put(skb, 1), page_address(page), 1); 339 skb_put_data(skb, page_address(page), 1);
340 } 340 }
341 341
342 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page, 342 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page,
diff --git a/include/linux/mISDNif.h b/include/linux/mISDNif.h
index ac02c54520e9..a7330eb3ec64 100644
--- a/include/linux/mISDNif.h
+++ b/include/linux/mISDNif.h
@@ -554,7 +554,7 @@ _alloc_mISDN_skb(u_int prim, u_int id, u_int len, void *dp, gfp_t gfp_mask)
554 if (!skb) 554 if (!skb)
555 return NULL; 555 return NULL;
556 if (len) 556 if (len)
557 memcpy(skb_put(skb, len), dp, len); 557 skb_put_data(skb, dp, len);
558 hh = mISDN_HEAD_P(skb); 558 hh = mISDN_HEAD_P(skb);
559 hh->prim = prim; 559 hh->prim = prim;
560 hh->id = id; 560 hh->id = id;
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 01ea64d0783a..5af5385a0e72 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -1913,6 +1913,16 @@ static inline void *skb_put_zero(struct sk_buff *skb, unsigned int len)
1913 return tmp; 1913 return tmp;
1914} 1914}
1915 1915
1916static inline void *skb_put_data(struct sk_buff *skb, const void *data,
1917 unsigned int len)
1918{
1919 void *tmp = skb_put(skb, len);
1920
1921 memcpy(tmp, data, len);
1922
1923 return tmp;
1924}
1925
1916unsigned char *skb_push(struct sk_buff *skb, unsigned int len); 1926unsigned char *skb_push(struct sk_buff *skb, unsigned int len);
1917static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len) 1927static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
1918{ 1928{
diff --git a/lib/nlattr.c b/lib/nlattr.c
index d09d9746fc5d..ab15a6c095d3 100644
--- a/lib/nlattr.c
+++ b/lib/nlattr.c
@@ -616,7 +616,7 @@ int nla_append(struct sk_buff *skb, int attrlen, const void *data)
616 if (unlikely(skb_tailroom(skb) < NLA_ALIGN(attrlen))) 616 if (unlikely(skb_tailroom(skb) < NLA_ALIGN(attrlen)))
617 return -EMSGSIZE; 617 return -EMSGSIZE;
618 618
619 memcpy(skb_put(skb, attrlen), data, attrlen); 619 skb_put_data(skb, data, attrlen);
620 return 0; 620 return 0;
621} 621}
622EXPORT_SYMBOL(nla_append); 622EXPORT_SYMBOL(nla_append);
diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c
index fa8d6b475c06..a3501173e200 100644
--- a/net/batman-adv/bat_iv_ogm.c
+++ b/net/batman-adv/bat_iv_ogm.c
@@ -732,8 +732,8 @@ static void batadv_iv_ogm_aggregate(struct batadv_forw_packet *forw_packet_aggr,
732 unsigned char *skb_buff; 732 unsigned char *skb_buff;
733 unsigned long new_direct_link_flag; 733 unsigned long new_direct_link_flag;
734 734
735 skb_buff = skb_put(forw_packet_aggr->skb, packet_len); 735 skb_buff = skb_put_data(forw_packet_aggr->skb, packet_buff,
736 memcpy(skb_buff, packet_buff, packet_len); 736 packet_len);
737 forw_packet_aggr->packet_len += packet_len; 737 forw_packet_aggr->packet_len += packet_len;
738 forw_packet_aggr->num_packets++; 738 forw_packet_aggr->num_packets++;
739 739
diff --git a/net/batman-adv/bat_v_ogm.c b/net/batman-adv/bat_v_ogm.c
index 03a35c9f456d..1e3dc374bfde 100644
--- a/net/batman-adv/bat_v_ogm.c
+++ b/net/batman-adv/bat_v_ogm.c
@@ -166,8 +166,7 @@ static void batadv_v_ogm_send(struct work_struct *work)
166 goto reschedule; 166 goto reschedule;
167 167
168 skb_reserve(skb, ETH_HLEN); 168 skb_reserve(skb, ETH_HLEN);
169 pkt_buff = skb_put(skb, ogm_buff_len); 169 pkt_buff = skb_put_data(skb, ogm_buff, ogm_buff_len);
170 memcpy(pkt_buff, ogm_buff, ogm_buff_len);
171 170
172 ogm_packet = (struct batadv_ogm2_packet *)skb->data; 171 ogm_packet = (struct batadv_ogm2_packet *)skb->data;
173 ogm_packet->seqno = htonl(atomic_read(&bat_priv->bat_v.ogm_seqno)); 172 ogm_packet->seqno = htonl(atomic_read(&bat_priv->bat_v.ogm_seqno));
@@ -382,8 +381,7 @@ static void batadv_v_ogm_forward(struct batadv_priv *bat_priv,
382 goto out; 381 goto out;
383 382
384 skb_reserve(skb, ETH_HLEN); 383 skb_reserve(skb, ETH_HLEN);
385 skb_buff = skb_put(skb, packet_len); 384 skb_buff = skb_put_data(skb, ogm_received, packet_len);
386 memcpy(skb_buff, ogm_received, packet_len);
387 385
388 /* apply forward penalty */ 386 /* apply forward penalty */
389 ogm_forward = (struct batadv_ogm2_packet *)skb_buff; 387 ogm_forward = (struct batadv_ogm2_packet *)skb_buff;
diff --git a/net/batman-adv/fragmentation.c b/net/batman-adv/fragmentation.c
index 8f964beaac28..a98cf1104a30 100644
--- a/net/batman-adv/fragmentation.c
+++ b/net/batman-adv/fragmentation.c
@@ -296,8 +296,7 @@ batadv_frag_merge_packets(struct hlist_head *chain)
296 /* Copy the payload of the each fragment into the last skb */ 296 /* Copy the payload of the each fragment into the last skb */
297 hlist_for_each_entry(entry, chain, list) { 297 hlist_for_each_entry(entry, chain, list) {
298 size = entry->skb->len - hdr_size; 298 size = entry->skb->len - hdr_size;
299 memcpy(skb_put(skb_out, size), entry->skb->data + hdr_size, 299 skb_put_data(skb_out, entry->skb->data + hdr_size, size);
300 size);
301 } 300 }
302 301
303free: 302free:
diff --git a/net/bluetooth/cmtp/core.c b/net/bluetooth/cmtp/core.c
index 9e59b6654126..f4c64ef01c24 100644
--- a/net/bluetooth/cmtp/core.c
+++ b/net/bluetooth/cmtp/core.c
@@ -122,7 +122,7 @@ static inline void cmtp_add_msgpart(struct cmtp_session *session, int id, const
122 if (skb && (skb->len > 0)) 122 if (skb && (skb->len > 0))
123 skb_copy_from_linear_data(skb, skb_put(nskb, skb->len), skb->len); 123 skb_copy_from_linear_data(skb, skb_put(nskb, skb->len), skb->len);
124 124
125 memcpy(skb_put(nskb, count), buf, count); 125 skb_put_data(nskb, buf, count);
126 126
127 session->reassembly[id] = nskb; 127 session->reassembly[id] = nskb;
128 128
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 93806b959039..d860e3cc23cf 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -3266,7 +3266,7 @@ int hci_reset_dev(struct hci_dev *hdev)
3266 return -ENOMEM; 3266 return -ENOMEM;
3267 3267
3268 hci_skb_pkt_type(skb) = HCI_EVENT_PKT; 3268 hci_skb_pkt_type(skb) = HCI_EVENT_PKT;
3269 memcpy(skb_put(skb, 3), hw_err, 3); 3269 skb_put_data(skb, hw_err, 3);
3270 3270
3271 /* Send Hardware Error to upper stack */ 3271 /* Send Hardware Error to upper stack */
3272 return hci_recv_frame(hdev, skb); 3272 return hci_recv_frame(hdev, skb);
diff --git a/net/bluetooth/hci_request.c b/net/bluetooth/hci_request.c
index b5faff458d8b..4e4105a932bd 100644
--- a/net/bluetooth/hci_request.c
+++ b/net/bluetooth/hci_request.c
@@ -304,7 +304,7 @@ struct sk_buff *hci_prepare_cmd(struct hci_dev *hdev, u16 opcode, u32 plen,
304 hdr->plen = plen; 304 hdr->plen = plen;
305 305
306 if (plen) 306 if (plen)
307 memcpy(skb_put(skb, plen), param, plen); 307 skb_put_data(skb, param, plen);
308 308
309 BT_DBG("skb len %d", skb->len); 309 BT_DBG("skb len %d", skb->len);
310 310
diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
index 638bf0e1a2e3..083e87f26a0f 100644
--- a/net/bluetooth/hci_sock.c
+++ b/net/bluetooth/hci_sock.c
@@ -379,7 +379,7 @@ void hci_send_monitor_ctrl_event(struct hci_dev *hdev, u16 event,
379 put_unaligned_le16(event, skb_put(skb, 2)); 379 put_unaligned_le16(event, skb_put(skb, 2));
380 380
381 if (data) 381 if (data)
382 memcpy(skb_put(skb, data_len), data, data_len); 382 skb_put_data(skb, data, data_len);
383 383
384 skb->tstamp = tstamp; 384 skb->tstamp = tstamp;
385 385
@@ -515,10 +515,10 @@ static struct sk_buff *create_monitor_ctrl_open(struct sock *sk)
515 515
516 put_unaligned_le32(hci_pi(sk)->cookie, skb_put(skb, 4)); 516 put_unaligned_le32(hci_pi(sk)->cookie, skb_put(skb, 4));
517 put_unaligned_le16(format, skb_put(skb, 2)); 517 put_unaligned_le16(format, skb_put(skb, 2));
518 memcpy(skb_put(skb, sizeof(ver)), ver, sizeof(ver)); 518 skb_put_data(skb, ver, sizeof(ver));
519 put_unaligned_le32(flags, skb_put(skb, 4)); 519 put_unaligned_le32(flags, skb_put(skb, 4));
520 *skb_put(skb, 1) = TASK_COMM_LEN; 520 *skb_put(skb, 1) = TASK_COMM_LEN;
521 memcpy(skb_put(skb, TASK_COMM_LEN), hci_pi(sk)->comm, TASK_COMM_LEN); 521 skb_put_data(skb, hci_pi(sk)->comm, TASK_COMM_LEN);
522 522
523 __net_timestamp(skb); 523 __net_timestamp(skb);
524 524
@@ -586,7 +586,7 @@ static struct sk_buff *create_monitor_ctrl_command(struct sock *sk, u16 index,
586 put_unaligned_le16(opcode, skb_put(skb, 2)); 586 put_unaligned_le16(opcode, skb_put(skb, 2));
587 587
588 if (buf) 588 if (buf)
589 memcpy(skb_put(skb, len), buf, len); 589 skb_put_data(skb, buf, len);
590 590
591 __net_timestamp(skb); 591 __net_timestamp(skb);
592 592
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index 0bec4588c3c8..9e83713262e8 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -114,7 +114,7 @@ static int hidp_send_message(struct hidp_session *session, struct socket *sock,
114 114
115 *skb_put(skb, 1) = hdr; 115 *skb_put(skb, 1) = hdr;
116 if (data && size > 0) 116 if (data && size > 0)
117 memcpy(skb_put(skb, size), data, size); 117 skb_put_data(skb, data, size);
118 118
119 skb_queue_tail(transmit, skb); 119 skb_queue_tail(transmit, skb);
120 wake_up_interruptible(sk_sleep(sk)); 120 wake_up_interruptible(sk_sleep(sk));
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index f88ac99528ce..fe6a5529bdf5 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -2923,7 +2923,7 @@ static struct sk_buff *l2cap_build_cmd(struct l2cap_conn *conn, u8 code,
2923 2923
2924 if (dlen) { 2924 if (dlen) {
2925 count -= L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE; 2925 count -= L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE;
2926 memcpy(skb_put(skb, count), data, count); 2926 skb_put_data(skb, data, count);
2927 data += count; 2927 data += count;
2928 } 2928 }
2929 2929
@@ -2938,7 +2938,7 @@ static struct sk_buff *l2cap_build_cmd(struct l2cap_conn *conn, u8 code,
2938 if (!*frag) 2938 if (!*frag)
2939 goto fail; 2939 goto fail;
2940 2940
2941 memcpy(skb_put(*frag, count), data, count); 2941 skb_put_data(*frag, data, count);
2942 2942
2943 len -= count; 2943 len -= count;
2944 data += count; 2944 data += count;
diff --git a/net/bluetooth/mgmt_util.c b/net/bluetooth/mgmt_util.c
index c933bd08c1fe..11d0ca64402b 100644
--- a/net/bluetooth/mgmt_util.c
+++ b/net/bluetooth/mgmt_util.c
@@ -44,7 +44,7 @@ static struct sk_buff *create_monitor_ctrl_event(__le16 index, u32 cookie,
44 put_unaligned_le16(opcode, skb_put(skb, 2)); 44 put_unaligned_le16(opcode, skb_put(skb, 2));
45 45
46 if (buf) 46 if (buf)
47 memcpy(skb_put(skb, len), buf, len); 47 skb_put_data(skb, buf, len);
48 48
49 __net_timestamp(skb); 49 __net_timestamp(skb);
50 50
@@ -75,7 +75,7 @@ int mgmt_send_event(u16 event, struct hci_dev *hdev, unsigned short channel,
75 hdr->len = cpu_to_le16(data_len); 75 hdr->len = cpu_to_le16(data_len);
76 76
77 if (data) 77 if (data)
78 memcpy(skb_put(skb, data_len), data, data_len); 78 skb_put_data(skb, data, data_len);
79 79
80 /* Time stamp */ 80 /* Time stamp */
81 __net_timestamp(skb); 81 __net_timestamp(skb);
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
index 2f2cb5e27cdd..5f3074cb6b4d 100644
--- a/net/bluetooth/rfcomm/tty.c
+++ b/net/bluetooth/rfcomm/tty.c
@@ -798,7 +798,7 @@ static int rfcomm_tty_write(struct tty_struct *tty, const unsigned char *buf, in
798 798
799 skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE); 799 skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE);
800 800
801 memcpy(skb_put(skb, size), buf + sent, size); 801 skb_put_data(skb, buf + sent, size);
802 802
803 rfcomm_dlc_send_noerror(dlc, skb); 803 rfcomm_dlc_send_noerror(dlc, skb);
804 804
diff --git a/net/bridge/netfilter/nft_reject_bridge.c b/net/bridge/netfilter/nft_reject_bridge.c
index bb6ed8e97580..15bf0c5322ab 100644
--- a/net/bridge/netfilter/nft_reject_bridge.c
+++ b/net/bridge/netfilter/nft_reject_bridge.c
@@ -151,8 +151,7 @@ static void nft_reject_br_send_v4_unreach(struct net *net,
151 icmph->type = ICMP_DEST_UNREACH; 151 icmph->type = ICMP_DEST_UNREACH;
152 icmph->code = code; 152 icmph->code = code;
153 153
154 payload = skb_put(nskb, len); 154 payload = skb_put_data(nskb, skb_network_header(oldskb), len);
155 memcpy(payload, skb_network_header(oldskb), len);
156 155
157 csum = csum_partial((void *)icmph, len + sizeof(struct icmphdr), 0); 156 csum = csum_partial((void *)icmph, len + sizeof(struct icmphdr), 0);
158 icmph->checksum = csum_fold(csum); 157 icmph->checksum = csum_fold(csum);
@@ -278,8 +277,7 @@ static void nft_reject_br_send_v6_unreach(struct net *net,
278 icmp6h->icmp6_type = ICMPV6_DEST_UNREACH; 277 icmp6h->icmp6_type = ICMPV6_DEST_UNREACH;
279 icmp6h->icmp6_code = code; 278 icmp6h->icmp6_code = code;
280 279
281 payload = skb_put(nskb, len); 280 payload = skb_put_data(nskb, skb_network_header(oldskb), len);
282 memcpy(payload, skb_network_header(oldskb), len);
283 nip6h->payload_len = htons(nskb->len - sizeof(struct ipv6hdr)); 281 nip6h->payload_len = htons(nskb->len - sizeof(struct ipv6hdr));
284 282
285 icmp6h->icmp6_cksum = 283 icmp6h->icmp6_cksum =
diff --git a/net/can/bcm.c b/net/can/bcm.c
index 65432633a250..47a8748d953a 100644
--- a/net/can/bcm.c
+++ b/net/can/bcm.c
@@ -282,7 +282,7 @@ static void bcm_can_tx(struct bcm_op *op)
282 can_skb_prv(skb)->ifindex = dev->ifindex; 282 can_skb_prv(skb)->ifindex = dev->ifindex;
283 can_skb_prv(skb)->skbcnt = 0; 283 can_skb_prv(skb)->skbcnt = 0;
284 284
285 memcpy(skb_put(skb, op->cfsiz), cf, op->cfsiz); 285 skb_put_data(skb, cf, op->cfsiz);
286 286
287 /* send with loopback */ 287 /* send with loopback */
288 skb->dev = dev; 288 skb->dev = dev;
@@ -318,13 +318,13 @@ static void bcm_send_to_user(struct bcm_op *op, struct bcm_msg_head *head,
318 if (!skb) 318 if (!skb)
319 return; 319 return;
320 320
321 memcpy(skb_put(skb, sizeof(*head)), head, sizeof(*head)); 321 skb_put_data(skb, head, sizeof(*head));
322 322
323 if (head->nframes) { 323 if (head->nframes) {
324 /* CAN frames starting here */ 324 /* CAN frames starting here */
325 firstframe = (struct canfd_frame *)skb_tail_pointer(skb); 325 firstframe = (struct canfd_frame *)skb_tail_pointer(skb);
326 326
327 memcpy(skb_put(skb, datalen), frames, datalen); 327 skb_put_data(skb, frames, datalen);
328 328
329 /* 329 /*
330 * the BCM uses the flags-element of the canfd_frame 330 * the BCM uses the flags-element of the canfd_frame
diff --git a/net/decnet/dn_nsp_out.c b/net/decnet/dn_nsp_out.c
index 849805e7af52..b8a558715395 100644
--- a/net/decnet/dn_nsp_out.c
+++ b/net/decnet/dn_nsp_out.c
@@ -533,7 +533,7 @@ void dn_send_conn_conf(struct sock *sk, gfp_t gfp)
533 *skb_put(skb,1) = len; 533 *skb_put(skb,1) = len;
534 534
535 if (len > 0) 535 if (len > 0)
536 memcpy(skb_put(skb, len), scp->conndata_out.opt_data, len); 536 skb_put_data(skb, scp->conndata_out.opt_data, len);
537 537
538 538
539 dn_nsp_send(skb); 539 dn_nsp_send(skb);
@@ -691,22 +691,22 @@ void dn_nsp_send_conninit(struct sock *sk, unsigned char msgflg)
691 aux = scp->accessdata.acc_userl; 691 aux = scp->accessdata.acc_userl;
692 *skb_put(skb, 1) = aux; 692 *skb_put(skb, 1) = aux;
693 if (aux > 0) 693 if (aux > 0)
694 memcpy(skb_put(skb, aux), scp->accessdata.acc_user, aux); 694 skb_put_data(skb, scp->accessdata.acc_user, aux);
695 695
696 aux = scp->accessdata.acc_passl; 696 aux = scp->accessdata.acc_passl;
697 *skb_put(skb, 1) = aux; 697 *skb_put(skb, 1) = aux;
698 if (aux > 0) 698 if (aux > 0)
699 memcpy(skb_put(skb, aux), scp->accessdata.acc_pass, aux); 699 skb_put_data(skb, scp->accessdata.acc_pass, aux);
700 700
701 aux = scp->accessdata.acc_accl; 701 aux = scp->accessdata.acc_accl;
702 *skb_put(skb, 1) = aux; 702 *skb_put(skb, 1) = aux;
703 if (aux > 0) 703 if (aux > 0)
704 memcpy(skb_put(skb, aux), scp->accessdata.acc_acc, aux); 704 skb_put_data(skb, scp->accessdata.acc_acc, aux);
705 705
706 aux = (__u8)le16_to_cpu(scp->conndata_out.opt_optl); 706 aux = (__u8)le16_to_cpu(scp->conndata_out.opt_optl);
707 *skb_put(skb, 1) = aux; 707 *skb_put(skb, 1) = aux;
708 if (aux > 0) 708 if (aux > 0)
709 memcpy(skb_put(skb, aux), scp->conndata_out.opt_data, aux); 709 skb_put_data(skb, scp->conndata_out.opt_data, aux);
710 710
711 scp->persist = dn_nsp_persist(sk); 711 scp->persist = dn_nsp_persist(sk);
712 scp->persist_fxn = dn_nsp_retrans_conninit; 712 scp->persist_fxn = dn_nsp_retrans_conninit;
diff --git a/net/ieee802154/6lowpan/tx.c b/net/ieee802154/6lowpan/tx.c
index dbb476d7d38f..e6ff5128e61a 100644
--- a/net/ieee802154/6lowpan/tx.c
+++ b/net/ieee802154/6lowpan/tx.c
@@ -121,8 +121,7 @@ lowpan_alloc_frag(struct sk_buff *skb, int size,
121 *mac_cb(frag) = *mac_cb(skb); 121 *mac_cb(frag) = *mac_cb(skb);
122 122
123 if (frag1) { 123 if (frag1) {
124 memcpy(skb_put(frag, skb->mac_len), 124 skb_put_data(frag, skb_mac_header(skb), skb->mac_len);
125 skb_mac_header(skb), skb->mac_len);
126 } else { 125 } else {
127 rc = wpan_dev_hard_header(frag, wdev, 126 rc = wpan_dev_hard_header(frag, wdev,
128 &master_hdr->dest, 127 &master_hdr->dest,
@@ -152,8 +151,8 @@ lowpan_xmit_fragment(struct sk_buff *skb, const struct ieee802154_hdr *wpan_hdr,
152 if (IS_ERR(frag)) 151 if (IS_ERR(frag))
153 return PTR_ERR(frag); 152 return PTR_ERR(frag);
154 153
155 memcpy(skb_put(frag, frag_hdrlen), frag_hdr, frag_hdrlen); 154 skb_put_data(frag, frag_hdr, frag_hdrlen);
156 memcpy(skb_put(frag, len), skb_network_header(skb) + offset, len); 155 skb_put_data(frag, skb_network_header(skb) + offset, len);
157 156
158 raw_dump_table(__func__, " fragment dump", frag->data, frag->len); 157 raw_dump_table(__func__, " fragment dump", frag->data, frag->len);
159 158
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index 9098429e38bc..b64046ccae69 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -1602,7 +1602,7 @@ static struct sk_buff *mld_newpack(struct inet6_dev *idev, unsigned int mtu)
1602 1602
1603 ip6_mc_hdr(sk, skb, dev, saddr, &mld2_all_mcr, NEXTHDR_HOP, 0); 1603 ip6_mc_hdr(sk, skb, dev, saddr, &mld2_all_mcr, NEXTHDR_HOP, 0);
1604 1604
1605 memcpy(skb_put(skb, sizeof(ra)), ra, sizeof(ra)); 1605 skb_put_data(skb, ra, sizeof(ra));
1606 1606
1607 skb_set_transport_header(skb, skb_tail_pointer(skb) - skb->data); 1607 skb_set_transport_header(skb, skb_tail_pointer(skb) - skb->data);
1608 skb_put(skb, sizeof(*pmr)); 1608 skb_put(skb, sizeof(*pmr));
@@ -2006,7 +2006,7 @@ static void igmp6_send(struct in6_addr *addr, struct net_device *dev, int type)
2006 2006
2007 ip6_mc_hdr(sk, skb, dev, saddr, snd_addr, NEXTHDR_HOP, payload_len); 2007 ip6_mc_hdr(sk, skb, dev, saddr, snd_addr, NEXTHDR_HOP, payload_len);
2008 2008
2009 memcpy(skb_put(skb, sizeof(ra)), ra, sizeof(ra)); 2009 skb_put_data(skb, ra, sizeof(ra));
2010 2010
2011 hdr = skb_put_zero(skb, sizeof(struct mld_msg)); 2011 hdr = skb_put_zero(skb, sizeof(struct mld_msg));
2012 hdr->mld_type = type; 2012 hdr->mld_type = type;
diff --git a/net/irda/ircomm/ircomm_tty.c b/net/irda/ircomm/ircomm_tty.c
index f6061c4bb0a8..ec157c3419b5 100644
--- a/net/irda/ircomm/ircomm_tty.c
+++ b/net/irda/ircomm/ircomm_tty.c
@@ -690,7 +690,7 @@ static int ircomm_tty_write(struct tty_struct *tty,
690 } 690 }
691 691
692 /* Copy data */ 692 /* Copy data */
693 memcpy(skb_put(skb,size), buf + len, size); 693 skb_put_data(skb, buf + len, size);
694 694
695 count -= size; 695 count -= size;
696 len += size; 696 len += size;
diff --git a/net/irda/irlap_frame.c b/net/irda/irlap_frame.c
index b936b1251a66..bf56ac7dba96 100644
--- a/net/irda/irlap_frame.c
+++ b/net/irda/irlap_frame.c
@@ -392,8 +392,7 @@ void irlap_send_discovery_xid_frame(struct irlap_cb *self, int S, __u8 s,
392 info[0] = discovery->data.charset; 392 info[0] = discovery->data.charset;
393 393
394 len = IRDA_MIN(discovery->name_len, skb_tailroom(tx_skb)); 394 len = IRDA_MIN(discovery->name_len, skb_tailroom(tx_skb));
395 info = skb_put(tx_skb, len); 395 info = skb_put_data(tx_skb, discovery->data.info, len);
396 memcpy(info, discovery->data.info, len);
397 } 396 }
398 irlap_queue_xmit(self, tx_skb); 397 irlap_queue_xmit(self, tx_skb);
399} 398}
@@ -1216,8 +1215,7 @@ void irlap_send_test_frame(struct irlap_cb *self, __u8 caddr, __u32 daddr,
1216 frame->control = TEST_RSP | PF_BIT; 1215 frame->control = TEST_RSP | PF_BIT;
1217 1216
1218 /* Copy info */ 1217 /* Copy info */
1219 info = skb_put(tx_skb, cmd->len); 1218 info = skb_put_data(tx_skb, cmd->data, cmd->len);
1220 memcpy(info, cmd->data, cmd->len);
1221 1219
1222 /* Return to sender */ 1220 /* Return to sender */
1223 irlap_wait_min_turn_around(self, &self->qos_tx); 1221 irlap_wait_min_turn_around(self, &self->qos_tx);
diff --git a/net/key/af_key.c b/net/key/af_key.c
index 8ad430edb5b8..3ebb4268973b 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -1706,8 +1706,7 @@ static int unicast_flush_resp(struct sock *sk, const struct sadb_msg *ihdr)
1706 if (!skb) 1706 if (!skb)
1707 return -ENOBUFS; 1707 return -ENOBUFS;
1708 1708
1709 hdr = (struct sadb_msg *) skb_put(skb, sizeof(struct sadb_msg)); 1709 hdr = skb_put_data(skb, ihdr, sizeof(struct sadb_msg));
1710 memcpy(hdr, ihdr, sizeof(struct sadb_msg));
1711 hdr->sadb_msg_errno = (uint8_t) 0; 1710 hdr->sadb_msg_errno = (uint8_t) 0;
1712 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); 1711 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t));
1713 1712
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index 660ac6a426f4..e9c6aa3ed05b 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -1569,7 +1569,7 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata,
1569 return; 1569 return;
1570 1570
1571 skb_reserve(skb, local->tx_headroom); 1571 skb_reserve(skb, local->tx_headroom);
1572 memcpy(skb_put(skb, presp->head_len), presp->head, presp->head_len); 1572 skb_put_data(skb, presp->head, presp->head_len);
1573 1573
1574 memcpy(((struct ieee80211_mgmt *) skb->data)->da, mgmt->sa, ETH_ALEN); 1574 memcpy(((struct ieee80211_mgmt *) skb->data)->da, mgmt->sa, ETH_ALEN);
1575 ibss_dbg(sdata, "Sending ProbeResp to %pM\n", mgmt->sa); 1575 ibss_dbg(sdata, "Sending ProbeResp to %pM\n", mgmt->sa);
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
index e45c8d94952e..861697f2d75b 100644
--- a/net/mac80211/mesh.c
+++ b/net/mac80211/mesh.c
@@ -345,7 +345,7 @@ int mesh_add_vendor_ies(struct ieee80211_sub_if_data *sdata,
345 data = ifmsh->ie + offset; 345 data = ifmsh->ie + offset;
346 if (skb_tailroom(skb) < len) 346 if (skb_tailroom(skb) < len)
347 return -ENOMEM; 347 return -ENOMEM;
348 memcpy(skb_put(skb, len), data, len); 348 skb_put_data(skb, data, len);
349 } 349 }
350 350
351 return 0; 351 return 0;
@@ -369,7 +369,7 @@ int mesh_add_rsn_ie(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb)
369 369
370 if (skb_tailroom(skb) < len) 370 if (skb_tailroom(skb) < len)
371 return -ENOMEM; 371 return -ENOMEM;
372 memcpy(skb_put(skb, len), data, len); 372 skb_put_data(skb, data, len);
373 373
374 return 0; 374 return 0;
375} 375}
@@ -1125,8 +1125,8 @@ ieee80211_mesh_rx_probe_req(struct ieee80211_sub_if_data *sdata,
1125 goto out; 1125 goto out;
1126 1126
1127 skb_reserve(presp, local->tx_headroom); 1127 skb_reserve(presp, local->tx_headroom);
1128 memcpy(skb_put(presp, bcn->head_len), bcn->head, bcn->head_len); 1128 skb_put_data(presp, bcn->head, bcn->head_len);
1129 memcpy(skb_put(presp, bcn->tail_len), bcn->tail, bcn->tail_len); 1129 skb_put_data(presp, bcn->tail, bcn->tail_len);
1130 hdr = (struct ieee80211_mgmt *) presp->data; 1130 hdr = (struct ieee80211_mgmt *) presp->data;
1131 hdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | 1131 hdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
1132 IEEE80211_STYPE_PROBE_RESP); 1132 IEEE80211_STYPE_PROBE_RESP);
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index e810334595ff..7be7917e1541 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -796,8 +796,8 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata)
796 after_ric, 796 after_ric,
797 ARRAY_SIZE(after_ric), 797 ARRAY_SIZE(after_ric),
798 offset); 798 offset);
799 pos = skb_put(skb, noffset - offset); 799 pos = skb_put_data(skb, assoc_data->ie + offset,
800 memcpy(pos, assoc_data->ie + offset, noffset - offset); 800 noffset - offset);
801 offset = noffset; 801 offset = noffset;
802 } 802 }
803 803
@@ -834,8 +834,8 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata)
834 noffset = ieee80211_ie_split(assoc_data->ie, assoc_data->ie_len, 834 noffset = ieee80211_ie_split(assoc_data->ie, assoc_data->ie_len,
835 before_vht, ARRAY_SIZE(before_vht), 835 before_vht, ARRAY_SIZE(before_vht),
836 offset); 836 offset);
837 pos = skb_put(skb, noffset - offset); 837 pos = skb_put_data(skb, assoc_data->ie + offset,
838 memcpy(pos, assoc_data->ie + offset, noffset - offset); 838 noffset - offset);
839 offset = noffset; 839 offset = noffset;
840 } 840 }
841 841
@@ -848,8 +848,8 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata)
848 noffset = ieee80211_ie_split_vendor(assoc_data->ie, 848 noffset = ieee80211_ie_split_vendor(assoc_data->ie,
849 assoc_data->ie_len, 849 assoc_data->ie_len,
850 offset); 850 offset);
851 pos = skb_put(skb, noffset - offset); 851 pos = skb_put_data(skb, assoc_data->ie + offset,
852 memcpy(pos, assoc_data->ie + offset, noffset - offset); 852 noffset - offset);
853 offset = noffset; 853 offset = noffset;
854 } 854 }
855 855
@@ -868,8 +868,8 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata)
868 /* add any remaining custom (i.e. vendor specific here) IEs */ 868 /* add any remaining custom (i.e. vendor specific here) IEs */
869 if (assoc_data->ie_len) { 869 if (assoc_data->ie_len) {
870 noffset = assoc_data->ie_len; 870 noffset = assoc_data->ie_len;
871 pos = skb_put(skb, noffset - offset); 871 pos = skb_put_data(skb, assoc_data->ie + offset,
872 memcpy(pos, assoc_data->ie + offset, noffset - offset); 872 noffset - offset);
873 } 873 }
874 874
875 if (assoc_data->fils_kek_len && 875 if (assoc_data->fils_kek_len &&
diff --git a/net/mac80211/offchannel.c b/net/mac80211/offchannel.c
index eede5c6db8d5..f8e7a8bbc618 100644
--- a/net/mac80211/offchannel.c
+++ b/net/mac80211/offchannel.c
@@ -885,8 +885,7 @@ int ieee80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
885 } 885 }
886 skb_reserve(skb, local->hw.extra_tx_headroom); 886 skb_reserve(skb, local->hw.extra_tx_headroom);
887 887
888 data = skb_put(skb, params->len); 888 data = skb_put_data(skb, params->buf, params->len);
889 memcpy(data, params->buf, params->len);
890 889
891 /* Update CSA counters */ 890 /* Update CSA counters */
892 if (sdata->vif.csa_active && 891 if (sdata->vif.csa_active &&
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index e1ab1c4af33c..53b00bb52095 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2098,7 +2098,7 @@ ieee80211_rx_h_defragment(struct ieee80211_rx_data *rx)
2098 } 2098 }
2099 } 2099 }
2100 while ((skb = __skb_dequeue(&entry->skb_list))) { 2100 while ((skb = __skb_dequeue(&entry->skb_list))) {
2101 memcpy(skb_put(rx->skb, skb->len), skb->data, skb->len); 2101 skb_put_data(rx->skb, skb->data, skb->len);
2102 dev_kfree_skb(skb); 2102 dev_kfree_skb(skb);
2103 } 2103 }
2104 2104
diff --git a/net/mac80211/tdls.c b/net/mac80211/tdls.c
index c379c99cd1d8..86740670102d 100644
--- a/net/mac80211/tdls.c
+++ b/net/mac80211/tdls.c
@@ -388,8 +388,7 @@ ieee80211_tdls_add_setup_start_ies(struct ieee80211_sub_if_data *sdata,
388 before_ext_cap, 388 before_ext_cap,
389 ARRAY_SIZE(before_ext_cap), 389 ARRAY_SIZE(before_ext_cap),
390 offset); 390 offset);
391 pos = skb_put(skb, noffset - offset); 391 pos = skb_put_data(skb, extra_ies + offset, noffset - offset);
392 memcpy(pos, extra_ies + offset, noffset - offset);
393 offset = noffset; 392 offset = noffset;
394 } 393 }
395 394
@@ -418,8 +417,7 @@ ieee80211_tdls_add_setup_start_ies(struct ieee80211_sub_if_data *sdata,
418 before_ht_cap, 417 before_ht_cap,
419 ARRAY_SIZE(before_ht_cap), 418 ARRAY_SIZE(before_ht_cap),
420 offset); 419 offset);
421 pos = skb_put(skb, noffset - offset); 420 pos = skb_put_data(skb, extra_ies + offset, noffset - offset);
422 memcpy(pos, extra_ies + offset, noffset - offset);
423 offset = noffset; 421 offset = noffset;
424 } 422 }
425 423
@@ -490,8 +488,7 @@ ieee80211_tdls_add_setup_start_ies(struct ieee80211_sub_if_data *sdata,
490 before_vht_cap, 488 before_vht_cap,
491 ARRAY_SIZE(before_vht_cap), 489 ARRAY_SIZE(before_vht_cap),
492 offset); 490 offset);
493 pos = skb_put(skb, noffset - offset); 491 pos = skb_put_data(skb, extra_ies + offset, noffset - offset);
494 memcpy(pos, extra_ies + offset, noffset - offset);
495 offset = noffset; 492 offset = noffset;
496 } 493 }
497 494
@@ -532,8 +529,7 @@ ieee80211_tdls_add_setup_start_ies(struct ieee80211_sub_if_data *sdata,
532 /* add any remaining IEs */ 529 /* add any remaining IEs */
533 if (extra_ies_len) { 530 if (extra_ies_len) {
534 noffset = extra_ies_len; 531 noffset = extra_ies_len;
535 pos = skb_put(skb, noffset - offset); 532 pos = skb_put_data(skb, extra_ies + offset, noffset - offset);
536 memcpy(pos, extra_ies + offset, noffset - offset);
537 } 533 }
538 534
539} 535}
@@ -575,8 +571,7 @@ ieee80211_tdls_add_setup_cfm_ies(struct ieee80211_sub_if_data *sdata,
575 before_qos, 571 before_qos,
576 ARRAY_SIZE(before_qos), 572 ARRAY_SIZE(before_qos),
577 offset); 573 offset);
578 pos = skb_put(skb, noffset - offset); 574 pos = skb_put_data(skb, extra_ies + offset, noffset - offset);
579 memcpy(pos, extra_ies + offset, noffset - offset);
580 offset = noffset; 575 offset = noffset;
581 } 576 }
582 577
@@ -596,8 +591,7 @@ ieee80211_tdls_add_setup_cfm_ies(struct ieee80211_sub_if_data *sdata,
596 before_ht_op, 591 before_ht_op,
597 ARRAY_SIZE(before_ht_op), 592 ARRAY_SIZE(before_ht_op),
598 offset); 593 offset);
599 pos = skb_put(skb, noffset - offset); 594 pos = skb_put_data(skb, extra_ies + offset, noffset - offset);
600 memcpy(pos, extra_ies + offset, noffset - offset);
601 offset = noffset; 595 offset = noffset;
602 } 596 }
603 597
@@ -638,8 +632,7 @@ ieee80211_tdls_add_setup_cfm_ies(struct ieee80211_sub_if_data *sdata,
638 /* add any remaining IEs */ 632 /* add any remaining IEs */
639 if (extra_ies_len) { 633 if (extra_ies_len) {
640 noffset = extra_ies_len; 634 noffset = extra_ies_len;
641 pos = skb_put(skb, noffset - offset); 635 pos = skb_put_data(skb, extra_ies + offset, noffset - offset);
642 memcpy(pos, extra_ies + offset, noffset - offset);
643 } 636 }
644} 637}
645 638
@@ -670,8 +663,7 @@ ieee80211_tdls_add_chan_switch_req_ies(struct ieee80211_sub_if_data *sdata,
670 before_lnkie, 663 before_lnkie,
671 ARRAY_SIZE(before_lnkie), 664 ARRAY_SIZE(before_lnkie),
672 offset); 665 offset);
673 pos = skb_put(skb, noffset - offset); 666 pos = skb_put_data(skb, extra_ies + offset, noffset - offset);
674 memcpy(pos, extra_ies + offset, noffset - offset);
675 offset = noffset; 667 offset = noffset;
676 } 668 }
677 669
@@ -680,8 +672,7 @@ ieee80211_tdls_add_chan_switch_req_ies(struct ieee80211_sub_if_data *sdata,
680 /* add any remaining IEs */ 672 /* add any remaining IEs */
681 if (extra_ies_len) { 673 if (extra_ies_len) {
682 noffset = extra_ies_len; 674 noffset = extra_ies_len;
683 pos = skb_put(skb, noffset - offset); 675 pos = skb_put_data(skb, extra_ies + offset, noffset - offset);
684 memcpy(pos, extra_ies + offset, noffset - offset);
685 } 676 }
686} 677}
687 678
@@ -696,7 +687,7 @@ ieee80211_tdls_add_chan_switch_resp_ies(struct ieee80211_sub_if_data *sdata,
696 ieee80211_tdls_add_link_ie(sdata, skb, peer, initiator); 687 ieee80211_tdls_add_link_ie(sdata, skb, peer, initiator);
697 688
698 if (extra_ies_len) 689 if (extra_ies_len)
699 memcpy(skb_put(skb, extra_ies_len), extra_ies, extra_ies_len); 690 skb_put_data(skb, extra_ies, extra_ies_len);
700} 691}
701 692
702static void ieee80211_tdls_add_ies(struct ieee80211_sub_if_data *sdata, 693static void ieee80211_tdls_add_ies(struct ieee80211_sub_if_data *sdata,
@@ -726,8 +717,7 @@ static void ieee80211_tdls_add_ies(struct ieee80211_sub_if_data *sdata,
726 case WLAN_TDLS_TEARDOWN: 717 case WLAN_TDLS_TEARDOWN:
727 case WLAN_TDLS_DISCOVERY_REQUEST: 718 case WLAN_TDLS_DISCOVERY_REQUEST:
728 if (extra_ies_len) 719 if (extra_ies_len)
729 memcpy(skb_put(skb, extra_ies_len), extra_ies, 720 skb_put_data(skb, extra_ies, extra_ies_len);
730 extra_ies_len);
731 if (status_code == 0 || action_code == WLAN_TDLS_TEARDOWN) 721 if (status_code == 0 || action_code == WLAN_TDLS_TEARDOWN)
732 ieee80211_tdls_add_link_ie(sdata, skb, peer, initiator); 722 ieee80211_tdls_add_link_ie(sdata, skb, peer, initiator);
733 break; 723 break;
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 1af9ed29a915..18c5d6e6305d 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -903,8 +903,8 @@ static int ieee80211_fragment(struct ieee80211_tx_data *tx,
903 tmp->dev = skb->dev; 903 tmp->dev = skb->dev;
904 904
905 /* copy header and data */ 905 /* copy header and data */
906 memcpy(skb_put(tmp, hdrlen), skb->data, hdrlen); 906 skb_put_data(tmp, skb->data, hdrlen);
907 memcpy(skb_put(tmp, fraglen), skb->data + pos, fraglen); 907 skb_put_data(tmp, skb->data + pos, fraglen);
908 908
909 pos += fraglen; 909 pos += fraglen;
910 } 910 }
@@ -4132,8 +4132,7 @@ __ieee80211_beacon_get(struct ieee80211_hw *hw,
4132 goto out; 4132 goto out;
4133 4133
4134 skb_reserve(skb, local->tx_headroom); 4134 skb_reserve(skb, local->tx_headroom);
4135 memcpy(skb_put(skb, beacon->head_len), beacon->head, 4135 skb_put_data(skb, beacon->head, beacon->head_len);
4136 beacon->head_len);
4137 4136
4138 ieee80211_beacon_add_tim(sdata, &ap->ps, skb, 4137 ieee80211_beacon_add_tim(sdata, &ap->ps, skb,
4139 is_template); 4138 is_template);
@@ -4147,8 +4146,8 @@ __ieee80211_beacon_get(struct ieee80211_hw *hw,
4147 } 4146 }
4148 4147
4149 if (beacon->tail) 4148 if (beacon->tail)
4150 memcpy(skb_put(skb, beacon->tail_len), 4149 skb_put_data(skb, beacon->tail,
4151 beacon->tail, beacon->tail_len); 4150 beacon->tail_len);
4152 } else 4151 } else
4153 goto out; 4152 goto out;
4154 } else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) { 4153 } else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) {
@@ -4171,8 +4170,7 @@ __ieee80211_beacon_get(struct ieee80211_hw *hw,
4171 if (!skb) 4170 if (!skb)
4172 goto out; 4171 goto out;
4173 skb_reserve(skb, local->tx_headroom); 4172 skb_reserve(skb, local->tx_headroom);
4174 memcpy(skb_put(skb, beacon->head_len), beacon->head, 4173 skb_put_data(skb, beacon->head, beacon->head_len);
4175 beacon->head_len);
4176 4174
4177 hdr = (struct ieee80211_hdr *) skb->data; 4175 hdr = (struct ieee80211_hdr *) skb->data;
4178 hdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | 4176 hdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
@@ -4207,8 +4205,7 @@ __ieee80211_beacon_get(struct ieee80211_hw *hw,
4207 if (!skb) 4205 if (!skb)
4208 goto out; 4206 goto out;
4209 skb_reserve(skb, local->tx_headroom); 4207 skb_reserve(skb, local->tx_headroom);
4210 memcpy(skb_put(skb, beacon->head_len), beacon->head, 4208 skb_put_data(skb, beacon->head, beacon->head_len);
4211 beacon->head_len);
4212 ieee80211_beacon_add_tim(sdata, &ifmsh->ps, skb, is_template); 4209 ieee80211_beacon_add_tim(sdata, &ifmsh->ps, skb, is_template);
4213 4210
4214 if (offs) { 4211 if (offs) {
@@ -4216,8 +4213,7 @@ __ieee80211_beacon_get(struct ieee80211_hw *hw,
4216 offs->tim_length = skb->len - beacon->head_len; 4213 offs->tim_length = skb->len - beacon->head_len;
4217 } 4214 }
4218 4215
4219 memcpy(skb_put(skb, beacon->tail_len), beacon->tail, 4216 skb_put_data(skb, beacon->tail, beacon->tail_len);
4220 beacon->tail_len);
4221 } else { 4217 } else {
4222 WARN_ON(1); 4218 WARN_ON(1);
4223 goto out; 4219 goto out;
@@ -4337,7 +4333,7 @@ struct sk_buff *ieee80211_proberesp_get(struct ieee80211_hw *hw,
4337 if (!skb) 4333 if (!skb)
4338 goto out; 4334 goto out;
4339 4335
4340 memcpy(skb_put(skb, presp->len), presp->data, presp->len); 4336 skb_put_data(skb, presp->data, presp->len);
4341 4337
4342 hdr = (struct ieee80211_hdr *) skb->data; 4338 hdr = (struct ieee80211_hdr *) skb->data;
4343 memset(hdr->addr1, 0, sizeof(hdr->addr1)); 4339 memset(hdr->addr1, 0, sizeof(hdr->addr1));
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 148c7276869c..259698de569f 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -1252,7 +1252,7 @@ void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata,
1252 mgmt->u.auth.auth_transaction = cpu_to_le16(transaction); 1252 mgmt->u.auth.auth_transaction = cpu_to_le16(transaction);
1253 mgmt->u.auth.status_code = cpu_to_le16(status); 1253 mgmt->u.auth.status_code = cpu_to_le16(status);
1254 if (extra) 1254 if (extra)
1255 memcpy(skb_put(skb, extra_len), extra, extra_len); 1255 skb_put_data(skb, extra, extra_len);
1256 1256
1257 if (auth_alg == WLAN_AUTH_SHARED_KEY && transaction == 3) { 1257 if (auth_alg == WLAN_AUTH_SHARED_KEY && transaction == 3) {
1258 mgmt->frame_control |= cpu_to_le16(IEEE80211_FCTL_PROTECTED); 1258 mgmt->frame_control |= cpu_to_le16(IEEE80211_FCTL_PROTECTED);
@@ -1292,8 +1292,7 @@ void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata,
1292 skb_reserve(skb, local->hw.extra_tx_headroom); 1292 skb_reserve(skb, local->hw.extra_tx_headroom);
1293 1293
1294 /* copy in frame */ 1294 /* copy in frame */
1295 memcpy(skb_put(skb, IEEE80211_DEAUTH_FRAME_LEN), 1295 skb_put_data(skb, mgmt, IEEE80211_DEAUTH_FRAME_LEN);
1296 mgmt, IEEE80211_DEAUTH_FRAME_LEN);
1297 1296
1298 if (sdata->vif.type != NL80211_IFTYPE_STATION || 1297 if (sdata->vif.type != NL80211_IFTYPE_STATION ||
1299 !(sdata->u.mgd.flags & IEEE80211_STA_MFP_ENABLED)) 1298 !(sdata->u.mgd.flags & IEEE80211_STA_MFP_ENABLED))
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index 7586d446d7dc..bd24a975fd49 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -170,7 +170,7 @@ static struct sk_buff *netlink_to_full_skb(const struct sk_buff *skb,
170 NETLINK_CB(new).dst_group = NETLINK_CB(skb).dst_group; 170 NETLINK_CB(new).dst_group = NETLINK_CB(skb).dst_group;
171 NETLINK_CB(new).creds = NETLINK_CB(skb).creds; 171 NETLINK_CB(new).creds = NETLINK_CB(skb).creds;
172 172
173 memcpy(skb_put(new, len), skb->data, len); 173 skb_put_data(new, skb->data, len);
174 return new; 174 return new;
175} 175}
176 176
diff --git a/net/nfc/digital_dep.c b/net/nfc/digital_dep.c
index f864ce19e13d..f44f75a2a4d5 100644
--- a/net/nfc/digital_dep.c
+++ b/net/nfc/digital_dep.c
@@ -226,8 +226,7 @@ digital_send_dep_data_prep(struct nfc_digital_dev *ddev, struct sk_buff *skb,
226 return ERR_PTR(-ENOMEM); 226 return ERR_PTR(-ENOMEM);
227 } 227 }
228 228
229 memcpy(skb_put(new_skb, ddev->remote_payload_max), skb->data, 229 skb_put_data(new_skb, skb->data, ddev->remote_payload_max);
230 ddev->remote_payload_max);
231 skb_pull(skb, ddev->remote_payload_max); 230 skb_pull(skb, ddev->remote_payload_max);
232 231
233 ddev->chaining_skb = skb; 232 ddev->chaining_skb = skb;
@@ -277,8 +276,7 @@ digital_recv_dep_data_gather(struct nfc_digital_dev *ddev, u8 pfb,
277 ddev->chaining_skb = new_skb; 276 ddev->chaining_skb = new_skb;
278 } 277 }
279 278
280 memcpy(skb_put(ddev->chaining_skb, resp->len), resp->data, 279 skb_put_data(ddev->chaining_skb, resp->data, resp->len);
281 resp->len);
282 280
283 kfree_skb(resp); 281 kfree_skb(resp);
284 resp = NULL; 282 resp = NULL;
@@ -525,7 +523,7 @@ int digital_in_send_atr_req(struct nfc_digital_dev *ddev,
525 523
526 if (gb_len) { 524 if (gb_len) {
527 atr_req->pp |= DIGITAL_GB_BIT; 525 atr_req->pp |= DIGITAL_GB_BIT;
528 memcpy(skb_put(skb, gb_len), gb, gb_len); 526 skb_put_data(skb, gb, gb_len);
529 } 527 }
530 528
531 digital_skb_push_dep_sod(ddev, skb); 529 digital_skb_push_dep_sod(ddev, skb);
@@ -1012,8 +1010,7 @@ static int digital_tg_send_ack(struct nfc_digital_dev *ddev,
1012 if (ddev->did) { 1010 if (ddev->did) {
1013 dep_res->pfb |= DIGITAL_NFC_DEP_PFB_DID_BIT; 1011 dep_res->pfb |= DIGITAL_NFC_DEP_PFB_DID_BIT;
1014 1012
1015 memcpy(skb_put(skb, sizeof(ddev->did)), &ddev->did, 1013 skb_put_data(skb, &ddev->did, sizeof(ddev->did));
1016 sizeof(ddev->did));
1017 } 1014 }
1018 1015
1019 ddev->curr_nfc_dep_pni = 1016 ddev->curr_nfc_dep_pni =
@@ -1057,8 +1054,7 @@ static int digital_tg_send_atn(struct nfc_digital_dev *ddev)
1057 if (ddev->did) { 1054 if (ddev->did) {
1058 dep_res->pfb |= DIGITAL_NFC_DEP_PFB_DID_BIT; 1055 dep_res->pfb |= DIGITAL_NFC_DEP_PFB_DID_BIT;
1059 1056
1060 memcpy(skb_put(skb, sizeof(ddev->did)), &ddev->did, 1057 skb_put_data(skb, &ddev->did, sizeof(ddev->did));
1061 sizeof(ddev->did));
1062 } 1058 }
1063 1059
1064 digital_skb_push_dep_sod(ddev, skb); 1060 digital_skb_push_dep_sod(ddev, skb);
@@ -1325,8 +1321,7 @@ int digital_tg_send_dep_res(struct nfc_digital_dev *ddev, struct sk_buff *skb)
1325 if (ddev->did) { 1321 if (ddev->did) {
1326 dep_res->pfb |= DIGITAL_NFC_DEP_PFB_DID_BIT; 1322 dep_res->pfb |= DIGITAL_NFC_DEP_PFB_DID_BIT;
1327 1323
1328 memcpy(skb_put(skb, sizeof(ddev->did)), &ddev->did, 1324 skb_put_data(skb, &ddev->did, sizeof(ddev->did));
1329 sizeof(ddev->did));
1330 } 1325 }
1331 1326
1332 ddev->curr_nfc_dep_pni = 1327 ddev->curr_nfc_dep_pni =
diff --git a/net/nfc/hci/core.c b/net/nfc/hci/core.c
index 2b0f0ac498d2..8741ad47a6fb 100644
--- a/net/nfc/hci/core.c
+++ b/net/nfc/hci/core.c
@@ -878,9 +878,9 @@ static void nfc_hci_recv_from_llc(struct nfc_hci_dev *hdev, struct sk_buff *skb)
878 878
879 skb_queue_walk(&hdev->rx_hcp_frags, frag_skb) { 879 skb_queue_walk(&hdev->rx_hcp_frags, frag_skb) {
880 msg_len = frag_skb->len - NFC_HCI_HCP_PACKET_HEADER_LEN; 880 msg_len = frag_skb->len - NFC_HCI_HCP_PACKET_HEADER_LEN;
881 memcpy(skb_put(hcp_skb, msg_len), 881 skb_put_data(hcp_skb,
882 frag_skb->data + NFC_HCI_HCP_PACKET_HEADER_LEN, 882 frag_skb->data + NFC_HCI_HCP_PACKET_HEADER_LEN,
883 msg_len); 883 msg_len);
884 } 884 }
885 885
886 skb_queue_purge(&hdev->rx_hcp_frags); 886 skb_queue_purge(&hdev->rx_hcp_frags);
diff --git a/net/nfc/llcp_commands.c b/net/nfc/llcp_commands.c
index c5959ce503e6..367d8c027101 100644
--- a/net/nfc/llcp_commands.c
+++ b/net/nfc/llcp_commands.c
@@ -298,7 +298,7 @@ static struct sk_buff *llcp_add_header(struct sk_buff *pdu,
298 298
299 pr_debug("header 0x%x 0x%x\n", header[0], header[1]); 299 pr_debug("header 0x%x 0x%x\n", header[0], header[1]);
300 300
301 memcpy(skb_put(pdu, LLCP_HEADER_SIZE), header, LLCP_HEADER_SIZE); 301 skb_put_data(pdu, header, LLCP_HEADER_SIZE);
302 302
303 return pdu; 303 return pdu;
304} 304}
@@ -311,7 +311,7 @@ static struct sk_buff *llcp_add_tlv(struct sk_buff *pdu, u8 *tlv,
311 if (tlv == NULL) 311 if (tlv == NULL)
312 return NULL; 312 return NULL;
313 313
314 memcpy(skb_put(pdu, tlv_length), tlv, tlv_length); 314 skb_put_data(pdu, tlv, tlv_length);
315 315
316 return pdu; 316 return pdu;
317} 317}
@@ -549,7 +549,7 @@ int nfc_llcp_send_snl_sdres(struct nfc_llcp_local *local,
549 return PTR_ERR(skb); 549 return PTR_ERR(skb);
550 550
551 hlist_for_each_entry_safe(sdp, n, tlv_list, node) { 551 hlist_for_each_entry_safe(sdp, n, tlv_list, node) {
552 memcpy(skb_put(skb, sdp->tlv_len), sdp->tlv, sdp->tlv_len); 552 skb_put_data(skb, sdp->tlv, sdp->tlv_len);
553 553
554 hlist_del(&sdp->node); 554 hlist_del(&sdp->node);
555 555
@@ -581,8 +581,7 @@ int nfc_llcp_send_snl_sdreq(struct nfc_llcp_local *local,
581 hlist_for_each_entry_safe(sdreq, n, tlv_list, node) { 581 hlist_for_each_entry_safe(sdreq, n, tlv_list, node) {
582 pr_debug("tid %d for %s\n", sdreq->tid, sdreq->uri); 582 pr_debug("tid %d for %s\n", sdreq->tid, sdreq->uri);
583 583
584 memcpy(skb_put(skb, sdreq->tlv_len), sdreq->tlv, 584 skb_put_data(skb, sdreq->tlv, sdreq->tlv_len);
585 sdreq->tlv_len);
586 585
587 hlist_del(&sdreq->node); 586 hlist_del(&sdreq->node);
588 587
@@ -622,7 +621,7 @@ int nfc_llcp_send_dm(struct nfc_llcp_local *local, u8 ssap, u8 dsap, u8 reason)
622 621
623 skb = llcp_add_header(skb, dsap, ssap, LLCP_PDU_DM); 622 skb = llcp_add_header(skb, dsap, ssap, LLCP_PDU_DM);
624 623
625 memcpy(skb_put(skb, 1), &reason, 1); 624 skb_put_data(skb, &reason, 1);
626 625
627 skb_queue_head(&local->tx_queue, skb); 626 skb_queue_head(&local->tx_queue, skb);
628 627
@@ -693,7 +692,7 @@ int nfc_llcp_send_i_frame(struct nfc_llcp_sock *sock,
693 skb_put(pdu, LLCP_SEQUENCE_SIZE); 692 skb_put(pdu, LLCP_SEQUENCE_SIZE);
694 693
695 if (likely(frag_len > 0)) 694 if (likely(frag_len > 0))
696 memcpy(skb_put(pdu, frag_len), msg_ptr, frag_len); 695 skb_put_data(pdu, msg_ptr, frag_len);
697 696
698 skb_queue_tail(&sock->tx_queue, pdu); 697 skb_queue_tail(&sock->tx_queue, pdu);
699 698
@@ -759,7 +758,7 @@ int nfc_llcp_send_ui_frame(struct nfc_llcp_sock *sock, u8 ssap, u8 dsap,
759 pdu = llcp_add_header(pdu, dsap, ssap, LLCP_PDU_UI); 758 pdu = llcp_add_header(pdu, dsap, ssap, LLCP_PDU_UI);
760 759
761 if (likely(frag_len > 0)) 760 if (likely(frag_len > 0))
762 memcpy(skb_put(pdu, frag_len), msg_ptr, frag_len); 761 skb_put_data(pdu, msg_ptr, frag_len);
763 762
764 /* No need to check for the peer RW for UI frames */ 763 /* No need to check for the peer RW for UI frames */
765 skb_queue_tail(&local->tx_queue, pdu); 764 skb_queue_tail(&local->tx_queue, pdu);
diff --git a/net/nfc/llcp_core.c b/net/nfc/llcp_core.c
index e69786c6804c..02eef5cf3cce 100644
--- a/net/nfc/llcp_core.c
+++ b/net/nfc/llcp_core.c
@@ -1390,7 +1390,7 @@ static void nfc_llcp_recv_agf(struct nfc_llcp_local *local, struct sk_buff *skb)
1390 return; 1390 return;
1391 } 1391 }
1392 1392
1393 memcpy(skb_put(new_skb, pdu_len), skb->data, pdu_len); 1393 skb_put_data(new_skb, skb->data, pdu_len);
1394 1394
1395 nfc_llcp_rx_skb(local, new_skb); 1395 nfc_llcp_rx_skb(local, new_skb);
1396 1396
diff --git a/net/nfc/nci/core.c b/net/nfc/nci/core.c
index 61fff422424f..17b9f1ce23db 100644
--- a/net/nfc/nci/core.c
+++ b/net/nfc/nci/core.c
@@ -462,7 +462,7 @@ int nci_nfcc_loopback(struct nci_dev *ndev, void *data, size_t data_len,
462 return -ENOMEM; 462 return -ENOMEM;
463 463
464 skb_reserve(skb, NCI_DATA_HDR_SIZE); 464 skb_reserve(skb, NCI_DATA_HDR_SIZE);
465 memcpy(skb_put(skb, data_len), data, data_len); 465 skb_put_data(skb, data, data_len);
466 466
467 loopback_data.conn_id = conn_id; 467 loopback_data.conn_id = conn_id;
468 loopback_data.data = skb; 468 loopback_data.data = skb;
@@ -1350,7 +1350,7 @@ int nci_send_cmd(struct nci_dev *ndev, __u16 opcode, __u8 plen, void *payload)
1350 nci_pbf_set((__u8 *)hdr, NCI_PBF_LAST); 1350 nci_pbf_set((__u8 *)hdr, NCI_PBF_LAST);
1351 1351
1352 if (plen) 1352 if (plen)
1353 memcpy(skb_put(skb, plen), payload, plen); 1353 skb_put_data(skb, payload, plen);
1354 1354
1355 skb_queue_tail(&ndev->cmd_q, skb); 1355 skb_queue_tail(&ndev->cmd_q, skb);
1356 queue_work(ndev->cmd_wq, &ndev->cmd_work); 1356 queue_work(ndev->cmd_wq, &ndev->cmd_work);
diff --git a/net/nfc/nci/data.c b/net/nfc/nci/data.c
index dbd24254412a..2488d9241f1d 100644
--- a/net/nfc/nci/data.c
+++ b/net/nfc/nci/data.c
@@ -138,7 +138,7 @@ static int nci_queue_tx_data_frags(struct nci_dev *ndev,
138 skb_reserve(skb_frag, NCI_DATA_HDR_SIZE); 138 skb_reserve(skb_frag, NCI_DATA_HDR_SIZE);
139 139
140 /* first, copy the data */ 140 /* first, copy the data */
141 memcpy(skb_put(skb_frag, frag_len), data, frag_len); 141 skb_put_data(skb_frag, data, frag_len);
142 142
143 /* second, set the header */ 143 /* second, set the header */
144 nci_push_data_hdr(ndev, conn_id, skb_frag, 144 nci_push_data_hdr(ndev, conn_id, skb_frag,
diff --git a/net/nfc/nci/hci.c b/net/nfc/nci/hci.c
index a0ab26d535dc..d4a53ce818c3 100644
--- a/net/nfc/nci/hci.c
+++ b/net/nfc/nci/hci.c
@@ -187,7 +187,7 @@ static int nci_hci_send_data(struct nci_dev *ndev, u8 pipe,
187 *skb_push(skb, 1) = cb; 187 *skb_push(skb, 1) = cb;
188 188
189 if (len > 0) 189 if (len > 0)
190 memcpy(skb_put(skb, len), data + i, len); 190 skb_put_data(skb, data + i, len);
191 191
192 r = nci_send_data(ndev, conn_info->conn_id, skb); 192 r = nci_send_data(ndev, conn_info->conn_id, skb);
193 if (r < 0) 193 if (r < 0)
@@ -476,8 +476,9 @@ void nci_hci_data_received_cb(void *context,
476 476
477 skb_queue_walk(&ndev->hci_dev->rx_hcp_frags, frag_skb) { 477 skb_queue_walk(&ndev->hci_dev->rx_hcp_frags, frag_skb) {
478 msg_len = frag_skb->len - NCI_HCI_HCP_PACKET_HEADER_LEN; 478 msg_len = frag_skb->len - NCI_HCI_HCP_PACKET_HEADER_LEN;
479 memcpy(skb_put(hcp_skb, msg_len), frag_skb->data + 479 skb_put_data(hcp_skb,
480 NCI_HCI_HCP_PACKET_HEADER_LEN, msg_len); 480 frag_skb->data + NCI_HCI_HCP_PACKET_HEADER_LEN,
481 msg_len);
481 } 482 }
482 483
483 skb_queue_purge(&ndev->hci_dev->rx_hcp_frags); 484 skb_queue_purge(&ndev->hci_dev->rx_hcp_frags);
diff --git a/net/nfc/nci/uart.c b/net/nfc/nci/uart.c
index c468eabd6943..cfa7f352c1c3 100644
--- a/net/nfc/nci/uart.c
+++ b/net/nfc/nci/uart.c
@@ -371,7 +371,7 @@ static int nci_uart_default_recv_buf(struct nci_uart *nu, const u8 *data,
371 chunk_len = nu->rx_packet_len - nu->rx_skb->len; 371 chunk_len = nu->rx_packet_len - nu->rx_skb->len;
372 if (count < chunk_len) 372 if (count < chunk_len)
373 chunk_len = count; 373 chunk_len = count;
374 memcpy(skb_put(nu->rx_skb, chunk_len), data, chunk_len); 374 skb_put_data(nu->rx_skb, data, chunk_len);
375 data += chunk_len; 375 data += chunk_len;
376 count -= chunk_len; 376 count -= chunk_len;
377 377
diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c
index 825f97671591..cff679167bdc 100644
--- a/net/qrtr/qrtr.c
+++ b/net/qrtr/qrtr.c
@@ -239,7 +239,7 @@ int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len)
239 return -ENOMEM; 239 return -ENOMEM;
240 240
241 skb_reset_transport_header(skb); 241 skb_reset_transport_header(skb);
242 memcpy(skb_put(skb, len), data, len); 242 skb_put_data(skb, data, len);
243 243
244 skb_queue_tail(&node->rx_queue, skb); 244 skb_queue_tail(&node->rx_queue, skb);
245 schedule_work(&node->work); 245 schedule_work(&node->work);
diff --git a/net/sctp/output.c b/net/sctp/output.c
index c339c682675a..febcc350cf00 100644
--- a/net/sctp/output.c
+++ b/net/sctp/output.c
@@ -469,8 +469,7 @@ merge:
469 auth = (struct sctp_auth_chunk *) 469 auth = (struct sctp_auth_chunk *)
470 skb_tail_pointer(nskb); 470 skb_tail_pointer(nskb);
471 471
472 memcpy(skb_put(nskb, chunk->skb->len), chunk->skb->data, 472 skb_put_data(nskb, chunk->skb->data, chunk->skb->len);
473 chunk->skb->len);
474 473
475 pr_debug("*** Chunk:%p[%s] %s 0x%x, length:%d, chunk->skb->len:%d, rtt_in_progress:%d\n", 474 pr_debug("*** Chunk:%p[%s] %s 0x%x, length:%d, chunk->skb->len:%d, rtt_in_progress:%d\n",
476 chunk, 475 chunk,
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
index aaac2660aaf7..034e916362cf 100644
--- a/net/sctp/sm_make_chunk.c
+++ b/net/sctp/sm_make_chunk.c
@@ -1479,9 +1479,7 @@ void *sctp_addto_chunk(struct sctp_chunk *chunk, int len, const void *data)
1479 int padlen = SCTP_PAD4(chunklen) - chunklen; 1479 int padlen = SCTP_PAD4(chunklen) - chunklen;
1480 1480
1481 padding = skb_put_zero(chunk->skb, padlen); 1481 padding = skb_put_zero(chunk->skb, padlen);
1482 target = skb_put(chunk->skb, len); 1482 target = skb_put_data(chunk->skb, data, len);
1483
1484 memcpy(target, data, len);
1485 1483
1486 /* Adjust the chunk length field. */ 1484 /* Adjust the chunk length field. */
1487 chunk->chunk_hdr->length = htons(chunklen + padlen + len); 1485 chunk->chunk_hdr->length = htons(chunklen + padlen + len);
diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c
index 18e24793659f..24e2054bfbaf 100644
--- a/net/vmw_vsock/virtio_transport_common.c
+++ b/net/vmw_vsock/virtio_transport_common.c
@@ -132,12 +132,10 @@ static struct sk_buff *virtio_transport_build_skb(void *opaque)
132 break; 132 break;
133 } 133 }
134 134
135 t_hdr = skb_put(skb, sizeof(pkt->hdr)); 135 t_hdr = skb_put_data(skb, &pkt->hdr, sizeof(pkt->hdr));
136 memcpy(t_hdr, &pkt->hdr, sizeof(pkt->hdr));
137 136
138 if (pkt->len) { 137 if (pkt->len) {
139 payload = skb_put(skb, pkt->len); 138 payload = skb_put_data(skb, pkt->buf, pkt->len);
140 memcpy(payload, pkt->buf, pkt->len);
141 } 139 }
142 140
143 return skb; 141 return skb;
diff --git a/net/x25/x25_subr.c b/net/x25/x25_subr.c
index 6b5af65f491f..eb466ece1730 100644
--- a/net/x25/x25_subr.c
+++ b/net/x25/x25_subr.c
@@ -188,17 +188,14 @@ void x25_write_internal(struct sock *sk, int frametype)
188 *dptr++ = X25_CALL_REQUEST; 188 *dptr++ = X25_CALL_REQUEST;
189 len = x25_addr_aton(addresses, &x25->dest_addr, 189 len = x25_addr_aton(addresses, &x25->dest_addr,
190 &x25->source_addr); 190 &x25->source_addr);
191 dptr = skb_put(skb, len); 191 dptr = skb_put_data(skb, addresses, len);
192 memcpy(dptr, addresses, len);
193 len = x25_create_facilities(facilities, 192 len = x25_create_facilities(facilities,
194 &x25->facilities, 193 &x25->facilities,
195 &x25->dte_facilities, 194 &x25->dte_facilities,
196 x25->neighbour->global_facil_mask); 195 x25->neighbour->global_facil_mask);
197 dptr = skb_put(skb, len); 196 dptr = skb_put_data(skb, facilities, len);
198 memcpy(dptr, facilities, len); 197 dptr = skb_put_data(skb, x25->calluserdata.cuddata,
199 dptr = skb_put(skb, x25->calluserdata.cudlength); 198 x25->calluserdata.cudlength);
200 memcpy(dptr, x25->calluserdata.cuddata,
201 x25->calluserdata.cudlength);
202 x25->calluserdata.cudlength = 0; 199 x25->calluserdata.cudlength = 0;
203 break; 200 break;
204 201
@@ -210,17 +207,15 @@ void x25_write_internal(struct sock *sk, int frametype)
210 &x25->facilities, 207 &x25->facilities,
211 &x25->dte_facilities, 208 &x25->dte_facilities,
212 x25->vc_facil_mask); 209 x25->vc_facil_mask);
213 dptr = skb_put(skb, len); 210 dptr = skb_put_data(skb, facilities, len);
214 memcpy(dptr, facilities, len);
215 211
216 /* fast select with no restriction on response 212 /* fast select with no restriction on response
217 allows call user data. Userland must 213 allows call user data. Userland must
218 ensure it is ours and not theirs */ 214 ensure it is ours and not theirs */
219 if(x25->facilities.reverse & 0x80) { 215 if(x25->facilities.reverse & 0x80) {
220 dptr = skb_put(skb, 216 dptr = skb_put_data(skb,
221 x25->calluserdata.cudlength); 217 x25->calluserdata.cuddata,
222 memcpy(dptr, x25->calluserdata.cuddata, 218 x25->calluserdata.cudlength);
223 x25->calluserdata.cudlength);
224 } 219 }
225 x25->calluserdata.cudlength = 0; 220 x25->calluserdata.cudlength = 0;
226 break; 221 break;