[SK_BUFF]: Introduce skb_copy_from_linear_data{_offset}
To clearly state the intent of copying from linear sk_buffs, _offset being a overly long variant but interesting for the sake of saving some bytes. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
David S. Miller
parent
2a123b86e2
commit
d626f62b11
@@ -1160,7 +1160,8 @@ static int nr_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
|
||||
if (sax != NULL) {
|
||||
sax->sax25_family = AF_NETROM;
|
||||
memcpy(sax->sax25_call.ax25_call, skb->data + 7, AX25_ADDR_LEN);
|
||||
skb_copy_from_linear_data_offset(skb, 7, sax->sax25_call.ax25_call,
|
||||
AX25_ADDR_LEN);
|
||||
}
|
||||
|
||||
msg->msg_namelen = sizeof(*sax);
|
||||
|
@@ -34,7 +34,7 @@ int nr_loopback_queue(struct sk_buff *skb)
|
||||
struct sk_buff *skbn;
|
||||
|
||||
if ((skbn = alloc_skb(skb->len, GFP_ATOMIC)) != NULL) {
|
||||
memcpy(skb_put(skbn, skb->len), skb->data, skb->len);
|
||||
skb_copy_from_linear_data(skb, skb_put(skbn, skb->len), skb->len);
|
||||
skb_reset_transport_header(skbn);
|
||||
|
||||
skb_queue_tail(&loopback_queue, skbn);
|
||||
|
@@ -40,7 +40,7 @@ void nr_output(struct sock *sk, struct sk_buff *skb)
|
||||
|
||||
if (skb->len - NR_TRANSPORT_LEN > NR_MAX_PACKET_SIZE) {
|
||||
/* Save a copy of the Transport Header */
|
||||
memcpy(transport, skb->data, NR_TRANSPORT_LEN);
|
||||
skb_copy_from_linear_data(skb, transport, NR_TRANSPORT_LEN);
|
||||
skb_pull(skb, NR_TRANSPORT_LEN);
|
||||
|
||||
frontlen = skb_headroom(skb);
|
||||
@@ -54,7 +54,7 @@ void nr_output(struct sock *sk, struct sk_buff *skb)
|
||||
len = (NR_MAX_PACKET_SIZE > skb->len) ? skb->len : NR_MAX_PACKET_SIZE;
|
||||
|
||||
/* Copy the user data */
|
||||
memcpy(skb_put(skbn, len), skb->data, len);
|
||||
skb_copy_from_linear_data(skb, skb_put(skbn, len), len);
|
||||
skb_pull(skb, len);
|
||||
|
||||
/* Duplicate the Transport Header */
|
||||
|
@@ -226,13 +226,13 @@ void __nr_transmit_reply(struct sk_buff *skb, int mine, unsigned char cmdflags)
|
||||
|
||||
dptr = skb_put(skbn, NR_NETWORK_LEN + NR_TRANSPORT_LEN);
|
||||
|
||||
memcpy(dptr, skb->data + 7, AX25_ADDR_LEN);
|
||||
skb_copy_from_linear_data_offset(skb, 7, dptr, AX25_ADDR_LEN);
|
||||
dptr[6] &= ~AX25_CBIT;
|
||||
dptr[6] &= ~AX25_EBIT;
|
||||
dptr[6] |= AX25_SSSID_SPARE;
|
||||
dptr += AX25_ADDR_LEN;
|
||||
|
||||
memcpy(dptr, skb->data + 0, AX25_ADDR_LEN);
|
||||
skb_copy_from_linear_data(skb, dptr, AX25_ADDR_LEN);
|
||||
dptr[6] &= ~AX25_CBIT;
|
||||
dptr[6] |= AX25_EBIT;
|
||||
dptr[6] |= AX25_SSSID_SPARE;
|
||||
|
Reference in New Issue
Block a user