/* push a new empty NDP */
        if (!(ctx->drvflags & CDC_NCM_FLAG_NDP_TO_END))
-               ndp16 = (struct usb_cdc_ncm_ndp16 *)memset(skb_put(skb, ctx->max_ndp_size), 0, ctx->max_ndp_size);
+               ndp16 = skb_put_zero(skb, ctx->max_ndp_size);
        else
                ndp16 = ctx->delayed_ndp16;
 
                        goto exit_no_skb;
                }
                /* fill out the initial 16-bit NTB header */
-               nth16 = (struct usb_cdc_ncm_nth16 *)memset(skb_put(skb_out, sizeof(struct usb_cdc_ncm_nth16)), 0, sizeof(struct usb_cdc_ncm_nth16));
+               nth16 = skb_put_zero(skb_out, sizeof(struct usb_cdc_ncm_nth16));
                nth16->dwSignature = cpu_to_le32(USB_CDC_NCM_NTH16_SIGN);
                nth16->wHeaderLength = cpu_to_le16(sizeof(struct usb_cdc_ncm_nth16));
                nth16->wSequence = cpu_to_le16(ctx->tx_seq++);
 
 
 
        skb = dev_alloc_skb(totalpacketlen);
-       memcpy((u8 *)skb_put(skb, totalpacketlen),
-              &reserved_page_packet, totalpacketlen);
+       skb_put_data(skb, &reserved_page_packet, totalpacketlen);
 
        if (cmd_send_packet)
                rtstatus = cmd_send_packet(hw, skb);
 
        if (!skb) {
                dlok = false;
        } else {
-               memcpy((u8 *) skb_put(skb, totalpacketlen),
-                       &reserved_page_packet, totalpacketlen);
+               skb_put_data(skb, &reserved_page_packet, totalpacketlen);
                rtstatus = _rtl92d_cmd_send_packet(hw, skb);
 
                if (rtstatus)
 
                      u1rsvdpageloc, 3);
 
        skb = dev_alloc_skb(totalpacketlen);
-       memcpy((u8 *)skb_put(skb, totalpacketlen),
-              &reserved_page_packet, totalpacketlen);
+       skb_put_data(skb, &reserved_page_packet, totalpacketlen);
 
        b_dlok = true;
 
 
                      u1rsvdpageloc, 3);
 
        skb = dev_alloc_skb(totalpacketlen);
-       memcpy((u8 *)skb_put(skb, totalpacketlen),
-              &reserved_page_packet, totalpacketlen);
+       skb_put_data(skb, &reserved_page_packet, totalpacketlen);
 
        rtstatus = rtl_cmd_send_packet(hw, skb);
 
 
                      u1rsvdpageloc, sizeof(u1rsvdpageloc));
 
        skb = dev_alloc_skb(totalpacketlen);
-       memcpy((u8 *)skb_put(skb, totalpacketlen),
-              &reserved_page_packet, totalpacketlen);
+       skb_put_data(skb, &reserved_page_packet, totalpacketlen);
 
        rtstatus = rtl_cmd_send_packet(hw, skb);
 
 
                      &reserved_page_packet_8812[0], totalpacketlen);
 
        skb = dev_alloc_skb(totalpacketlen);
-       memcpy((u8 *)skb_put(skb, totalpacketlen),
-              &reserved_page_packet_8812, totalpacketlen);
+       skb_put_data(skb, &reserved_page_packet_8812, totalpacketlen);
 
        rtstatus = rtl_cmd_send_packet(hw, skb);
 
                      &reserved_page_packet_8821[0], totalpacketlen);
 
        skb = dev_alloc_skb(totalpacketlen);
-       memcpy((u8 *)skb_put(skb, totalpacketlen),
-              &reserved_page_packet_8821, totalpacketlen);
+       skb_put_data(skb, &reserved_page_packet_8821, totalpacketlen);
 
        rtstatus = rtl_cmd_send_packet(hw, skb);