aboutsummaryrefslogtreecommitdiffstats
path: root/net/netrom
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2007-03-27 17:55:52 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-04-26 01:28:23 -0400
commitd626f62b11e00c16e81e4308ab93d3f13551812a (patch)
treefac4af6ced853755e12fc709d55f0c2bec51265d /net/netrom
parent2a123b86e2b242a4a6db990d2851d45e192f88e5 (diff)
[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>
Diffstat (limited to 'net/netrom')
-rw-r--r--net/netrom/af_netrom.c3
-rw-r--r--net/netrom/nr_loopback.c2
-rw-r--r--net/netrom/nr_out.c4
-rw-r--r--net/netrom/nr_subr.c4
4 files changed, 7 insertions, 6 deletions
diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c
index 053fa26ff90a..5dc7448925db 100644
--- a/net/netrom/af_netrom.c
+++ b/net/netrom/af_netrom.c
@@ -1160,7 +1160,8 @@ static int nr_recvmsg(struct kiocb *iocb, struct socket *sock,
1160 1160
1161 if (sax != NULL) { 1161 if (sax != NULL) {
1162 sax->sax25_family = AF_NETROM; 1162 sax->sax25_family = AF_NETROM;
1163 memcpy(sax->sax25_call.ax25_call, skb->data + 7, AX25_ADDR_LEN); 1163 skb_copy_from_linear_data_offset(skb, 7, sax->sax25_call.ax25_call,
1164 AX25_ADDR_LEN);
1164 } 1165 }
1165 1166
1166 msg->msg_namelen = sizeof(*sax); 1167 msg->msg_namelen = sizeof(*sax);
diff --git a/net/netrom/nr_loopback.c b/net/netrom/nr_loopback.c
index 99fdab16ded0..f324d5df4186 100644
--- a/net/netrom/nr_loopback.c
+++ b/net/netrom/nr_loopback.c
@@ -34,7 +34,7 @@ int nr_loopback_queue(struct sk_buff *skb)
34 struct sk_buff *skbn; 34 struct sk_buff *skbn;
35 35
36 if ((skbn = alloc_skb(skb->len, GFP_ATOMIC)) != NULL) { 36 if ((skbn = alloc_skb(skb->len, GFP_ATOMIC)) != NULL) {
37 memcpy(skb_put(skbn, skb->len), skb->data, skb->len); 37 skb_copy_from_linear_data(skb, skb_put(skbn, skb->len), skb->len);
38 skb_reset_transport_header(skbn); 38 skb_reset_transport_header(skbn);
39 39
40 skb_queue_tail(&loopback_queue, skbn); 40 skb_queue_tail(&loopback_queue, skbn);
diff --git a/net/netrom/nr_out.c b/net/netrom/nr_out.c
index 0cbfb611465b..7c467c95c7d6 100644
--- a/net/netrom/nr_out.c
+++ b/net/netrom/nr_out.c
@@ -40,7 +40,7 @@ void nr_output(struct sock *sk, struct sk_buff *skb)
40 40
41 if (skb->len - NR_TRANSPORT_LEN > NR_MAX_PACKET_SIZE) { 41 if (skb->len - NR_TRANSPORT_LEN > NR_MAX_PACKET_SIZE) {
42 /* Save a copy of the Transport Header */ 42 /* Save a copy of the Transport Header */
43 memcpy(transport, skb->data, NR_TRANSPORT_LEN); 43 skb_copy_from_linear_data(skb, transport, NR_TRANSPORT_LEN);
44 skb_pull(skb, NR_TRANSPORT_LEN); 44 skb_pull(skb, NR_TRANSPORT_LEN);
45 45
46 frontlen = skb_headroom(skb); 46 frontlen = skb_headroom(skb);
@@ -54,7 +54,7 @@ void nr_output(struct sock *sk, struct sk_buff *skb)
54 len = (NR_MAX_PACKET_SIZE > skb->len) ? skb->len : NR_MAX_PACKET_SIZE; 54 len = (NR_MAX_PACKET_SIZE > skb->len) ? skb->len : NR_MAX_PACKET_SIZE;
55 55
56 /* Copy the user data */ 56 /* Copy the user data */
57 memcpy(skb_put(skbn, len), skb->data, len); 57 skb_copy_from_linear_data(skb, skb_put(skbn, len), len);
58 skb_pull(skb, len); 58 skb_pull(skb, len);
59 59
60 /* Duplicate the Transport Header */ 60 /* Duplicate the Transport Header */
diff --git a/net/netrom/nr_subr.c b/net/netrom/nr_subr.c
index 07b694d18870..04e7d0d2fd8f 100644
--- a/net/netrom/nr_subr.c
+++ b/net/netrom/nr_subr.c
@@ -226,13 +226,13 @@ void __nr_transmit_reply(struct sk_buff *skb, int mine, unsigned char cmdflags)
226 226
227 dptr = skb_put(skbn, NR_NETWORK_LEN + NR_TRANSPORT_LEN); 227 dptr = skb_put(skbn, NR_NETWORK_LEN + NR_TRANSPORT_LEN);
228 228
229 memcpy(dptr, skb->data + 7, AX25_ADDR_LEN); 229 skb_copy_from_linear_data_offset(skb, 7, dptr, AX25_ADDR_LEN);
230 dptr[6] &= ~AX25_CBIT; 230 dptr[6] &= ~AX25_CBIT;
231 dptr[6] &= ~AX25_EBIT; 231 dptr[6] &= ~AX25_EBIT;
232 dptr[6] |= AX25_SSSID_SPARE; 232 dptr[6] |= AX25_SSSID_SPARE;
233 dptr += AX25_ADDR_LEN; 233 dptr += AX25_ADDR_LEN;
234 234
235 memcpy(dptr, skb->data + 0, AX25_ADDR_LEN); 235 skb_copy_from_linear_data(skb, dptr, AX25_ADDR_LEN);
236 dptr[6] &= ~AX25_CBIT; 236 dptr[6] &= ~AX25_CBIT;
237 dptr[6] |= AX25_EBIT; 237 dptr[6] |= AX25_EBIT;
238 dptr[6] |= AX25_SSSID_SPARE; 238 dptr[6] |= AX25_SSSID_SPARE;