net: introduce __skb_put_[zero, data, u8]
authoryuan linyu <Linyu.Yuan@alcatel-sbell.com.cn>
Sun, 18 Jun 2017 14:48:17 +0000 (22:48 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 20 Jun 2017 17:30:14 +0000 (13:30 -0400)
follow Johannes Berg, semantic patch file as below,
@@
identifier p, p2;
expression len;
expression skb;
type t, t2;
@@
(
-p = __skb_put(skb, len);
+p = __skb_put_zero(skb, len);
|
-p = (t)__skb_put(skb, len);
+p = __skb_put_zero(skb, len);
)
... when != p
(
p2 = (t2)p;
-memset(p2, 0, len);
|
-memset(p, 0, len);
)

@@
identifier p;
expression len;
expression skb;
type t;
@@
(
-t p = __skb_put(skb, len);
+t p = __skb_put_zero(skb, len);
)
... when != p
(
-memset(p, 0, len);
)

@@
type t, t2;
identifier p, p2;
expression skb;
@@
t *p;
...
(
-p = __skb_put(skb, sizeof(t));
+p = __skb_put_zero(skb, sizeof(t));
|
-p = (t *)__skb_put(skb, sizeof(t));
+p = __skb_put_zero(skb, sizeof(t));
)
... when != p
(
p2 = (t2)p;
-memset(p2, 0, sizeof(*p));
|
-memset(p, 0, sizeof(*p));
)

@@
expression skb, len;
@@
-memset(__skb_put(skb, len), 0, len);
+__skb_put_zero(skb, len);

@@
expression skb, len, data;
@@
-memcpy(__skb_put(skb, len), data, len);
+__skb_put_data(skb, data, len);

@@
expression SKB, C, S;
typedef u8;
identifier fn = {__skb_put};
fresh identifier fn2 = fn ## "_u8";
@@
- *(u8 *)fn(SKB, S) = C;
+ fn2(SKB, C);

Signed-off-by: yuan linyu <Linyu.Yuan@alcatel-sbell.com.cn>
Signed-off-by: David S. Miller <davem@davemloft.net>
19 files changed:
drivers/crypto/chelsio/chcr_algo.c
drivers/infiniband/hw/cxgb4/cm.c
drivers/infiniband/hw/cxgb4/cq.c
drivers/infiniband/hw/cxgb4/mem.c
drivers/infiniband/hw/cxgb4/qp.c
drivers/isdn/gigaset/asyncdata.c
drivers/isdn/gigaset/isocdata.c
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
drivers/net/ethernet/chelsio/cxgb3/sge.c
drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c
drivers/net/usb/int51x1.c
drivers/staging/octeon/ethernet-tx.c
drivers/target/iscsi/cxgbit/cxgbit_cm.c
include/linux/skbuff.h
lib/test_bpf.c
net/802/garp.c
net/bluetooth/bnep/core.c
net/bluetooth/bnep/netdev.c
net/bridge/br_stp_bpdu.c

index 92185ab6797db092e873267294292738a32a62d3..b75b8beed68ff65defe60a36331c559c08bf0a49 100644 (file)
@@ -604,8 +604,7 @@ static struct sk_buff
        if (!skb)
                return ERR_PTR(-ENOMEM);
        skb_reserve(skb, sizeof(struct sge_opaque_hdr));
-       chcr_req = __skb_put(skb, transhdr_len);
-       memset(chcr_req, 0, transhdr_len);
+       chcr_req = __skb_put_zero(skb, transhdr_len);
        chcr_req->sec_cpl.op_ivinsrtofst =
                FILL_SEC_CPL_OP_IVINSR(ctx->dev->rx_channel_id, 2, 1);
 
@@ -881,8 +880,7 @@ static struct sk_buff *create_hash_wr(struct ahash_request *req,
                return skb;
 
        skb_reserve(skb, sizeof(struct sge_opaque_hdr));
-       chcr_req = __skb_put(skb, transhdr_len);
-       memset(chcr_req, 0, transhdr_len);
+       chcr_req = __skb_put_zero(skb, transhdr_len);
 
        chcr_req->sec_cpl.op_ivinsrtofst =
                FILL_SEC_CPL_OP_IVINSR(ctx->dev->rx_channel_id, 2, 0);
@@ -1447,8 +1445,7 @@ static struct sk_buff *create_authenc_wr(struct aead_request *req,
        skb_reserve(skb, sizeof(struct sge_opaque_hdr));
 
        /* Write WR */
-       chcr_req = __skb_put(skb, transhdr_len);
-       memset(chcr_req, 0, transhdr_len);
+       chcr_req = __skb_put_zero(skb, transhdr_len);
 
        stop_offset = (op_type == CHCR_ENCRYPT_OP) ? 0 : authsize;
 
@@ -1779,8 +1776,7 @@ static struct sk_buff *create_aead_ccm_wr(struct aead_request *req,
 
        skb_reserve(skb, sizeof(struct sge_opaque_hdr));
 
-       chcr_req = __skb_put(skb, transhdr_len);
-       memset(chcr_req, 0, transhdr_len);
+       chcr_req = __skb_put_zero(skb, transhdr_len);
 
        fill_sec_cpl_for_aead(&chcr_req->sec_cpl, dst_size, req, op_type, ctx);
 
@@ -1892,8 +1888,7 @@ static struct sk_buff *create_gcm_wr(struct aead_request *req,
        /* NIC driver is going to write the sge hdr. */
        skb_reserve(skb, sizeof(struct sge_opaque_hdr));
 
-       chcr_req = __skb_put(skb, transhdr_len);
-       memset(chcr_req, 0, transhdr_len);
+       chcr_req = __skb_put_zero(skb, transhdr_len);
 
        if (get_aead_subtype(tfm) == CRYPTO_ALG_SUB_TYPE_AEAD_RFC4106)
                req->assoclen -= 8;
index 76fb39415e186040c642198ac60c1ec87e3d82a4..e49b34c3b1369d60d93d79fb0f22cc55e262ee5d 100644 (file)
@@ -1900,8 +1900,7 @@ static int send_fw_act_open_req(struct c4iw_ep *ep, unsigned int atid)
        int win;
 
        skb = get_skb(NULL, sizeof(*req), GFP_KERNEL);
-       req = __skb_put(skb, sizeof(*req));
-       memset(req, 0, sizeof(*req));
+       req = __skb_put_zero(skb, sizeof(*req));
        req->op_compl = htonl(WR_OP_V(FW_OFLD_CONNECTION_WR));
        req->len16_pkd = htonl(FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*req), 16)));
        req->le.filter = cpu_to_be32(cxgb4_select_ntuple(
@@ -3803,8 +3802,7 @@ static void send_fw_pass_open_req(struct c4iw_dev *dev, struct sk_buff *skb,
        req_skb = alloc_skb(sizeof(struct fw_ofld_connection_wr), GFP_KERNEL);
        if (!req_skb)
                return;
-       req = __skb_put(req_skb, sizeof(*req));
-       memset(req, 0, sizeof(*req));
+       req = __skb_put_zero(req_skb, sizeof(*req));
        req->op_compl = htonl(WR_OP_V(FW_OFLD_CONNECTION_WR) | FW_WR_COMPL_F);
        req->len16_pkd = htonl(FW_WR_LEN16_V(DIV_ROUND_UP(sizeof(*req), 16)));
        req->le.version_cpl = htonl(FW_OFLD_CONNECTION_WR_CPL_F);
index 394cfe2625fec18b4e64fa018a7f08893dd8144e..e16fcaf6b5a3f48792d478b5c6c21944395630f7 100644 (file)
@@ -44,8 +44,7 @@ static int destroy_cq(struct c4iw_rdev *rdev, struct t4_cq *cq,
        wr_len = sizeof *res_wr + sizeof *res;
        set_wr_txq(skb, CPL_PRIORITY_CONTROL, 0);
 
-       res_wr = __skb_put(skb, wr_len);
-       memset(res_wr, 0, wr_len);
+       res_wr = __skb_put_zero(skb, wr_len);
        res_wr->op_nres = cpu_to_be32(
                        FW_WR_OP_V(FW_RI_RES_WR) |
                        FW_RI_RES_WR_NRES_V(1) |
@@ -114,8 +113,7 @@ static int create_cq(struct c4iw_rdev *rdev, struct t4_cq *cq,
        }
        set_wr_txq(skb, CPL_PRIORITY_CONTROL, 0);
 
-       res_wr = __skb_put(skb, wr_len);
-       memset(res_wr, 0, wr_len);
+       res_wr = __skb_put_zero(skb, wr_len);
        res_wr->op_nres = cpu_to_be32(
                        FW_WR_OP_V(FW_RI_RES_WR) |
                        FW_RI_RES_WR_NRES_V(1) |
index ca992e4b66e4606f8940bcc44399461f635e13cb..5332f06b99ba4cfa3ef404ec816d09fb68ec0ddf 100644 (file)
@@ -81,8 +81,7 @@ static int _c4iw_write_mem_dma_aligned(struct c4iw_rdev *rdev, u32 addr,
        }
        set_wr_txq(skb, CPL_PRIORITY_CONTROL, 0);
 
-       req = __skb_put(skb, wr_len);
-       memset(req, 0, wr_len);
+       req = __skb_put_zero(skb, wr_len);
        INIT_ULPTX_WR(req, wr_len, 0, 0);
        req->wr.wr_hi = cpu_to_be32(FW_WR_OP_V(FW_ULPTX_WR) |
                        (wait ? FW_WR_COMPL_F : 0));
@@ -142,8 +141,7 @@ static int _c4iw_write_mem_inline(struct c4iw_rdev *rdev, u32 addr, u32 len,
                }
                set_wr_txq(skb, CPL_PRIORITY_CONTROL, 0);
 
-               req = __skb_put(skb, wr_len);
-               memset(req, 0, wr_len);
+               req = __skb_put_zero(skb, wr_len);
                INIT_ULPTX_WR(req, wr_len, 0, 0);
 
                if (i == (num_wqe-1)) {
index b23a0b057347827e02247b5fdb33fbd2764a6b68..bfc77596acbe1ec5c6d8f1346d567b4db0117297 100644 (file)
@@ -293,8 +293,7 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
        }
        set_wr_txq(skb, CPL_PRIORITY_CONTROL, 0);
 
-       res_wr = __skb_put(skb, wr_len);
-       memset(res_wr, 0, wr_len);
+       res_wr = __skb_put_zero(skb, wr_len);
        res_wr->op_nres = cpu_to_be32(
                        FW_WR_OP_V(FW_RI_RES_WR) |
                        FW_RI_RES_WR_NRES_V(2) |
index 4caecdcc6f290afe0a8ea62c4e6a6c387de323ce..bc208557f7839853b85776a9a6b8acb6d556d41c 100644 (file)
@@ -264,7 +264,7 @@ byte_stuff:
                                /* skip remainder of packet */
                                bcs->rx_skb = skb = NULL;
                        } else {
-                               *(u8 *)__skb_put(skb, 1) = c;
+                               __skb_put_u8(skb, c);
                                fcs = crc_ccitt_byte(fcs, c);
                        }
                }
@@ -315,7 +315,7 @@ static unsigned iraw_loop(unsigned numbytes, struct inbuf_t *inbuf)
 
                /* regular data byte: append to current skb */
                inputstate |= INS_have_data;
-               *(u8 *)__skb_put(skb, 1) = bitrev8(c);
+               __skb_put_u8(skb, bitrev8(c));
        }
 
        /* pass data up */
index 74e250664ce9e0dfa851bf1696bceed6b618243a..97e00118ccfe8ace07e83526651df27926f2f271 100644 (file)
@@ -511,7 +511,7 @@ static inline void hdlc_putbyte(unsigned char c, struct bc_state *bcs)
                bcs->rx_skb = NULL;
                return;
        }
-       *(u8 *)__skb_put(bcs->rx_skb, 1) = c;
+       __skb_put_u8(bcs->rx_skb, c);
 }
 
 /* hdlc_flush
index e1a50c87c9a9ba49b5e86add32a8884a942ce4a4..0bc6a4ffce30e07e31d98deae5efe4f778800739 100644 (file)
@@ -471,8 +471,7 @@ static int init_tp_parity(struct adapter *adap)
                if (!skb)
                        goto alloc_skb_fail;
 
-               req = __skb_put(skb, sizeof(*req));
-               memset(req, 0, sizeof(*req));
+               req = __skb_put_zero(skb, sizeof(*req));
                req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD));
                OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_SMT_WRITE_REQ, i));
                req->mtu_idx = NMTUS - 1;
@@ -495,8 +494,7 @@ static int init_tp_parity(struct adapter *adap)
                if (!skb)
                        goto alloc_skb_fail;
 
-               req = __skb_put(skb, sizeof(*req));
-               memset(req, 0, sizeof(*req));
+               req = __skb_put_zero(skb, sizeof(*req));
                req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD));
                OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_L2T_WRITE_REQ, i));
                req->params = htonl(V_L2T_W_IDX(i));
@@ -518,8 +516,7 @@ static int init_tp_parity(struct adapter *adap)
                if (!skb)
                        goto alloc_skb_fail;
 
-               req = __skb_put(skb, sizeof(*req));
-               memset(req, 0, sizeof(*req));
+               req = __skb_put_zero(skb, sizeof(*req));
                req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD));
                OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_RTE_WRITE_REQ, i));
                req->l2t_idx = htonl(V_L2T_W_IDX(i));
@@ -538,8 +535,7 @@ static int init_tp_parity(struct adapter *adap)
        if (!skb)
                goto alloc_skb_fail;
 
-       greq = __skb_put(skb, sizeof(*greq));
-       memset(greq, 0, sizeof(*greq));
+       greq = __skb_put_zero(skb, sizeof(*greq));
        greq->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD));
        OPCODE_TID(greq) = htonl(MK_OPCODE_TID(CPL_SET_TCB_FIELD, 0));
        greq->mask = cpu_to_be64(1);
index 1b9d154f114923841702ee67af2e0f17d94e39e9..e2d342647b19485ec0c497d3b60985d7e1693a1a 100644 (file)
@@ -2282,7 +2282,7 @@ static int process_responses(struct adapter *adap, struct sge_qset *qs,
                        if (!skb)
                                goto no_mem;
 
-                       memcpy(__skb_put(skb, AN_PKT_SIZE), r, AN_PKT_SIZE);
+                       __skb_put_data(skb, r, AN_PKT_SIZE);
                        skb->data[0] = CPL_ASYNC_NOTIF;
                        rss_hi = htonl(CPL_ASYNC_NOTIF << 24);
                        q->async_notif++;
index a0fab65e80e89f8383c6132db0177cb2053283be..45b5853ca2f1a8184d322bdbac8868ff088f2c98 100644 (file)
@@ -231,8 +231,7 @@ int set_filter_wr(struct adapter *adapter, int fidx)
                }
        }
 
-       fwr = __skb_put(skb, sizeof(*fwr));
-       memset(fwr, 0, sizeof(*fwr));
+       fwr = __skb_put_zero(skb, sizeof(*fwr));
 
        /* It would be nice to put most of the following in t4_hw.c but most
         * of the work is translating the cxgbtool ch_filter_specification
index be63a829b8fed4ea4e2cfbe2a2b13603358c14e4..ae2b2563460b913d674dd8b12cdd7af6320577aa 100644 (file)
@@ -110,7 +110,7 @@ static struct sk_buff *int51x1_tx_fixup(struct usbnet *dev,
        *len = cpu_to_le16(pack_len);
 
        if(need_tail)
-               memset(__skb_put(skb, need_tail), 0, need_tail);
+               __skb_put_zero(skb, need_tail);
 
        return skb;
 }
index ff4119e8de422bb9b9090df30253c522ab730889..31f35025d19eccacee992584bc5b68e107d39411 100644 (file)
@@ -251,8 +251,7 @@ int cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev)
 
                                if ((skb_tail_pointer(skb) + add_bytes) <=
                                    skb_end_pointer(skb))
-                                       memset(__skb_put(skb, add_bytes), 0,
-                                              add_bytes);
+                                       __skb_put_zero(skb, add_bytes);
                        }
                }
        }
index 15cd1e33b16b997f8466d1af09b0bca75a7907ed..e583dd8a418b537eda69a9606fa8a3fc2c6a6207 100644 (file)
@@ -1085,8 +1085,7 @@ cxgbit_pass_accept_rpl(struct cxgbit_sock *csk, struct cpl_pass_accept_req *req)
                return;
        }
 
-       rpl5 = __skb_put(skb, len);
-       memset(rpl5, 0, len);
+       rpl5 = __skb_put_zero(skb, len);
 
        INIT_TP_WR(rpl5, csk->tid);
        OPCODE_TID(rpl5) = cpu_to_be32(MK_OPCODE_TID(CPL_PASS_ACCEPT_RPL,
@@ -1367,8 +1366,7 @@ u32 cxgbit_send_tx_flowc_wr(struct cxgbit_sock *csk)
        flowclen16 = cxgbit_tx_flowc_wr_credits(csk, &nparams, &flowclen);
 
        skb = __skb_dequeue(&csk->skbq);
-       flowc = __skb_put(skb, flowclen);
-       memset(flowc, 0, flowclen);
+       flowc = __skb_put_zero(skb, flowclen);
 
        flowc->op_to_nparams = cpu_to_be32(FW_WR_OP_V(FW_FLOWC_WR) |
                                           FW_FLOWC_WR_NPARAMS_V(nparams));
@@ -1439,8 +1437,7 @@ int cxgbit_setup_conn_digest(struct cxgbit_sock *csk)
                return -ENOMEM;
 
        /*  set up ulp submode */
-       req = __skb_put(skb, len);
-       memset(req, 0, len);
+       req = __skb_put_zero(skb, len);
 
        INIT_TP_WR(req, csk->tid);
        OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_SET_TCB_FIELD, csk->tid));
@@ -1476,8 +1473,7 @@ int cxgbit_setup_conn_pgidx(struct cxgbit_sock *csk, u32 pg_idx)
        if (!skb)
                return -ENOMEM;
 
-       req = __skb_put(skb, len);
-       memset(req, 0, len);
+       req = __skb_put_zero(skb, len);
 
        INIT_TP_WR(req, csk->tid);
        OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_SET_TCB_FIELD, csk->tid));
index 852feacf4bbfae14b6eb4f710aa022a7953369fa..a17e235639ae194a36387fbe2e4f6fad379d41e7 100644 (file)
@@ -1904,6 +1904,28 @@ static inline void *__skb_put(struct sk_buff *skb, unsigned int len)
        return tmp;
 }
 
+static inline void *__skb_put_zero(struct sk_buff *skb, unsigned int len)
+{
+       void *tmp = __skb_put(skb, len);
+
+       memset(tmp, 0, len);
+       return tmp;
+}
+
+static inline void *__skb_put_data(struct sk_buff *skb, const void *data,
+                                  unsigned int len)
+{
+       void *tmp = __skb_put(skb, len);
+
+       memcpy(tmp, data, len);
+       return tmp;
+}
+
+static inline void __skb_put_u8(struct sk_buff *skb, u8 val)
+{
+       *(u8 *)__skb_put(skb, 1) = val;
+}
+
 static inline void *skb_put_zero(struct sk_buff *skb, unsigned int len)
 {
        void *tmp = skb_put(skb, len);
index c871e0e76c2a6b12c868e8ca6fb55a32bbc7b50e..d9d5a410955c948b4e923d729417bc9dbb91e514 100644 (file)
@@ -5717,7 +5717,7 @@ static struct sk_buff *populate_skb(char *buf, int size)
        if (!skb)
                return NULL;
 
-       memcpy(__skb_put(skb, size), buf, size);
+       __skb_put_data(skb, buf, size);
 
        /* Initialize a fake skb with test pattern. */
        skb_reset_mac_header(skb);
index a9a2665692937383f05d31032437e81716c0929f..2dac647ff4201fc1dfcf98d05b398422fea7d6d5 100644 (file)
@@ -232,7 +232,7 @@ static int garp_pdu_append_end_mark(struct garp_applicant *app)
 {
        if (skb_tailroom(app->pdu) < sizeof(u8))
                return -1;
-       *(u8 *)__skb_put(app->pdu, sizeof(u8)) = GARP_END_MARK;
+       __skb_put_u8(app->pdu, GARP_END_MARK);
        return 0;
 }
 
index fbf251fef70fe89d61a3533bbb7a6b3e18429c01..9a40013da9151c0ec70704ddbc92760810a5028b 100644 (file)
@@ -374,25 +374,22 @@ static int bnep_rx_frame(struct bnep_session *s, struct sk_buff *skb)
        /* Decompress header and construct ether frame */
        switch (type & BNEP_TYPE_MASK) {
        case BNEP_COMPRESSED:
-               memcpy(__skb_put(nskb, ETH_HLEN), &s->eh, ETH_HLEN);
+               __skb_put_data(nskb, &s->eh, ETH_HLEN);
                break;
 
        case BNEP_COMPRESSED_SRC_ONLY:
-               memcpy(__skb_put(nskb, ETH_ALEN), s->eh.h_dest, ETH_ALEN);
-               memcpy(__skb_put(nskb, ETH_ALEN), skb_mac_header(skb), ETH_ALEN);
+               __skb_put_data(nskb, s->eh.h_dest, ETH_ALEN);
+               __skb_put_data(nskb, skb_mac_header(skb), ETH_ALEN);
                put_unaligned(s->eh.h_proto, (__be16 *) __skb_put(nskb, 2));
                break;
 
        case BNEP_COMPRESSED_DST_ONLY:
-               memcpy(__skb_put(nskb, ETH_ALEN), skb_mac_header(skb),
-                                                               ETH_ALEN);
-               memcpy(__skb_put(nskb, ETH_ALEN + 2), s->eh.h_source,
-                                                               ETH_ALEN + 2);
+               __skb_put_data(nskb, skb_mac_header(skb), ETH_ALEN);
+               __skb_put_data(nskb, s->eh.h_source, ETH_ALEN + 2);
                break;
 
        case BNEP_GENERAL:
-               memcpy(__skb_put(nskb, ETH_ALEN * 2), skb_mac_header(skb),
-                                                               ETH_ALEN * 2);
+               __skb_put_data(nskb, skb_mac_header(skb), ETH_ALEN * 2);
                put_unaligned(s->eh.h_proto, (__be16 *) __skb_put(nskb, 2));
                break;
        }
index 2b875edf77e1df271715df200821b90929517b57..1d4d7d415730a6b6063def95a1c99861c7a4536b 100644 (file)
@@ -75,16 +75,16 @@ static void bnep_net_set_mc_list(struct net_device *dev)
                u8 start[ETH_ALEN] = { 0x01 };
 
                /* Request all addresses */
-               memcpy(__skb_put(skb, ETH_ALEN), start, ETH_ALEN);
-               memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN);
+               __skb_put_data(skb, start, ETH_ALEN);
+               __skb_put_data(skb, dev->broadcast, ETH_ALEN);
                r->len = htons(ETH_ALEN * 2);
        } else {
                struct netdev_hw_addr *ha;
                int i, len = skb->len;
 
                if (dev->flags & IFF_BROADCAST) {
-                       memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN);
-                       memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN);
+                       __skb_put_data(skb, dev->broadcast, ETH_ALEN);
+                       __skb_put_data(skb, dev->broadcast, ETH_ALEN);
                }
 
                /* FIXME: We should group addresses here. */
@@ -93,8 +93,8 @@ static void bnep_net_set_mc_list(struct net_device *dev)
                netdev_for_each_mc_addr(ha, dev) {
                        if (i == BNEP_MAX_MULTICAST_FILTERS)
                                break;
-                       memcpy(__skb_put(skb, ETH_ALEN), ha->addr, ETH_ALEN);
-                       memcpy(__skb_put(skb, ETH_ALEN), ha->addr, ETH_ALEN);
+                       __skb_put_data(skb, ha->addr, ETH_ALEN);
+                       __skb_put_data(skb, ha->addr, ETH_ALEN);
 
                        i++;
                }
index 5881fbc114a9ec88612fd08f35a73d2794d56890..1b75d6bf12bd9cbe4411c6dadf85a273bbdcbdbc 100644 (file)
@@ -50,7 +50,7 @@ static void br_send_bpdu(struct net_bridge_port *p,
        skb->priority = TC_PRIO_CONTROL;
 
        skb_reserve(skb, LLC_RESERVE);
-       memcpy(__skb_put(skb, length), data, length);
+       __skb_put_data(skb, data, length);
 
        llc_pdu_header_init(skb, LLC_PDU_TYPE_U, LLC_SAP_BSPAN,
                            LLC_SAP_BSPAN, LLC_PDU_CMD);