diff options
Diffstat (limited to 'net/tipc')
-rw-r--r-- | net/tipc/config.c | 2 | ||||
-rw-r--r-- | net/tipc/eth_media.c | 20 | ||||
-rw-r--r-- | net/tipc/link.c | 48 | ||||
-rw-r--r-- | net/tipc/msg.h | 18 | ||||
-rw-r--r-- | net/tipc/netlink.c | 2 | ||||
-rw-r--r-- | net/tipc/port.c | 8 | ||||
-rw-r--r-- | net/tipc/socket.c | 2 |
7 files changed, 54 insertions, 46 deletions
diff --git a/net/tipc/config.c b/net/tipc/config.c index 14789a82de53..c71337a22d33 100644 --- a/net/tipc/config.c +++ b/net/tipc/config.c | |||
@@ -89,7 +89,7 @@ struct sk_buff *tipc_cfg_reply_alloc(int payload_size) | |||
89 | int tipc_cfg_append_tlv(struct sk_buff *buf, int tlv_type, | 89 | int tipc_cfg_append_tlv(struct sk_buff *buf, int tlv_type, |
90 | void *tlv_data, int tlv_data_size) | 90 | void *tlv_data, int tlv_data_size) |
91 | { | 91 | { |
92 | struct tlv_desc *tlv = (struct tlv_desc *)buf->tail; | 92 | struct tlv_desc *tlv = (struct tlv_desc *)skb_tail_pointer(buf); |
93 | int new_tlv_space = TLV_SPACE(tlv_data_size); | 93 | int new_tlv_space = TLV_SPACE(tlv_data_size); |
94 | 94 | ||
95 | if (skb_tailroom(buf) < new_tlv_space) { | 95 | if (skb_tailroom(buf) < new_tlv_space) { |
diff --git a/net/tipc/eth_media.c b/net/tipc/eth_media.c index 9be4839e32c5..0ee6ded18f3a 100644 --- a/net/tipc/eth_media.c +++ b/net/tipc/eth_media.c | |||
@@ -73,7 +73,7 @@ static int send_msg(struct sk_buff *buf, struct tipc_bearer *tb_ptr, | |||
73 | 73 | ||
74 | clone = skb_clone(buf, GFP_ATOMIC); | 74 | clone = skb_clone(buf, GFP_ATOMIC); |
75 | if (clone) { | 75 | if (clone) { |
76 | clone->nh.raw = clone->data; | 76 | skb_reset_network_header(clone); |
77 | dev = ((struct eth_bearer *)(tb_ptr->usr_handle))->dev; | 77 | dev = ((struct eth_bearer *)(tb_ptr->usr_handle))->dev; |
78 | clone->dev = dev; | 78 | clone->dev = dev; |
79 | dev->hard_header(clone, dev, ETH_P_TIPC, | 79 | dev->hard_header(clone, dev, ETH_P_TIPC, |
@@ -99,8 +99,8 @@ static int recv_msg(struct sk_buff *buf, struct net_device *dev, | |||
99 | 99 | ||
100 | if (likely(eb_ptr->bearer)) { | 100 | if (likely(eb_ptr->bearer)) { |
101 | if (likely(!dev->promiscuity) || | 101 | if (likely(!dev->promiscuity) || |
102 | !memcmp(buf->mac.raw,dev->dev_addr,ETH_ALEN) || | 102 | !memcmp(skb_mac_header(buf), dev->dev_addr, ETH_ALEN) || |
103 | !memcmp(buf->mac.raw,dev->broadcast,ETH_ALEN)) { | 103 | !memcmp(skb_mac_header(buf), dev->broadcast, ETH_ALEN)) { |
104 | size = msg_size((struct tipc_msg *)buf->data); | 104 | size = msg_size((struct tipc_msg *)buf->data); |
105 | skb_trim(buf, size); | 105 | skb_trim(buf, size); |
106 | if (likely(buf->len == size)) { | 106 | if (likely(buf->len == size)) { |
@@ -120,16 +120,18 @@ static int recv_msg(struct sk_buff *buf, struct net_device *dev, | |||
120 | 120 | ||
121 | static int enable_bearer(struct tipc_bearer *tb_ptr) | 121 | static int enable_bearer(struct tipc_bearer *tb_ptr) |
122 | { | 122 | { |
123 | struct net_device *dev = dev_base; | 123 | struct net_device *dev, *pdev; |
124 | struct eth_bearer *eb_ptr = ð_bearers[0]; | 124 | struct eth_bearer *eb_ptr = ð_bearers[0]; |
125 | struct eth_bearer *stop = ð_bearers[MAX_ETH_BEARERS]; | 125 | struct eth_bearer *stop = ð_bearers[MAX_ETH_BEARERS]; |
126 | char *driver_name = strchr((const char *)tb_ptr->name, ':') + 1; | 126 | char *driver_name = strchr((const char *)tb_ptr->name, ':') + 1; |
127 | 127 | ||
128 | /* Find device with specified name */ | 128 | /* Find device with specified name */ |
129 | 129 | dev = NULL; | |
130 | while (dev && dev->name && strncmp(dev->name, driver_name, IFNAMSIZ)) { | 130 | for_each_netdev(pdev) |
131 | dev = dev->next; | 131 | if (!strncmp(dev->name, driver_name, IFNAMSIZ)) { |
132 | } | 132 | dev = pdev; |
133 | break; | ||
134 | } | ||
133 | if (!dev) | 135 | if (!dev) |
134 | return -ENODEV; | 136 | return -ENODEV; |
135 | 137 | ||
@@ -140,7 +142,7 @@ static int enable_bearer(struct tipc_bearer *tb_ptr) | |||
140 | return -EDQUOT; | 142 | return -EDQUOT; |
141 | if (!eb_ptr->dev) { | 143 | if (!eb_ptr->dev) { |
142 | eb_ptr->dev = dev; | 144 | eb_ptr->dev = dev; |
143 | eb_ptr->tipc_packet_type.type = __constant_htons(ETH_P_TIPC); | 145 | eb_ptr->tipc_packet_type.type = htons(ETH_P_TIPC); |
144 | eb_ptr->tipc_packet_type.dev = dev; | 146 | eb_ptr->tipc_packet_type.dev = dev; |
145 | eb_ptr->tipc_packet_type.func = recv_msg; | 147 | eb_ptr->tipc_packet_type.func = recv_msg; |
146 | eb_ptr->tipc_packet_type.af_packet_priv = eb_ptr; | 148 | eb_ptr->tipc_packet_type.af_packet_priv = eb_ptr; |
diff --git a/net/tipc/link.c b/net/tipc/link.c index 71c2f2fd405c..2124f32ef29f 100644 --- a/net/tipc/link.c +++ b/net/tipc/link.c | |||
@@ -1001,7 +1001,7 @@ static int link_bundle_buf(struct link *l_ptr, | |||
1001 | return 0; | 1001 | return 0; |
1002 | 1002 | ||
1003 | skb_put(bundler, pad + size); | 1003 | skb_put(bundler, pad + size); |
1004 | memcpy(bundler->data + to_pos, buf->data, size); | 1004 | skb_copy_to_linear_data_offset(bundler, to_pos, buf->data, size); |
1005 | msg_set_size(bundler_msg, to_pos + size); | 1005 | msg_set_size(bundler_msg, to_pos + size); |
1006 | msg_set_msgcnt(bundler_msg, msg_msgcnt(bundler_msg) + 1); | 1006 | msg_set_msgcnt(bundler_msg, msg_msgcnt(bundler_msg) + 1); |
1007 | dbg("Packed msg # %u(%u octets) into pos %u in buf(#%u)\n", | 1007 | dbg("Packed msg # %u(%u octets) into pos %u in buf(#%u)\n", |
@@ -1109,8 +1109,8 @@ int tipc_link_send_buf(struct link *l_ptr, struct sk_buff *buf) | |||
1109 | if (bundler) { | 1109 | if (bundler) { |
1110 | msg_init(&bundler_hdr, MSG_BUNDLER, OPEN_MSG, | 1110 | msg_init(&bundler_hdr, MSG_BUNDLER, OPEN_MSG, |
1111 | TIPC_OK, INT_H_SIZE, l_ptr->addr); | 1111 | TIPC_OK, INT_H_SIZE, l_ptr->addr); |
1112 | memcpy(bundler->data, (unchar *)&bundler_hdr, | 1112 | skb_copy_to_linear_data(bundler, &bundler_hdr, |
1113 | INT_H_SIZE); | 1113 | INT_H_SIZE); |
1114 | skb_trim(bundler, INT_H_SIZE); | 1114 | skb_trim(bundler, INT_H_SIZE); |
1115 | link_bundle_buf(l_ptr, bundler, buf); | 1115 | link_bundle_buf(l_ptr, bundler, buf); |
1116 | buf = bundler; | 1116 | buf = bundler; |
@@ -1383,9 +1383,9 @@ again: | |||
1383 | if (!buf) | 1383 | if (!buf) |
1384 | return -ENOMEM; | 1384 | return -ENOMEM; |
1385 | buf->next = NULL; | 1385 | buf->next = NULL; |
1386 | memcpy(buf->data, (unchar *)&fragm_hdr, INT_H_SIZE); | 1386 | skb_copy_to_linear_data(buf, &fragm_hdr, INT_H_SIZE); |
1387 | hsz = msg_hdr_sz(hdr); | 1387 | hsz = msg_hdr_sz(hdr); |
1388 | memcpy(buf->data + INT_H_SIZE, (unchar *)hdr, hsz); | 1388 | skb_copy_to_linear_data_offset(buf, INT_H_SIZE, hdr, hsz); |
1389 | msg_dbg(buf_msg(buf), ">BUILD>"); | 1389 | msg_dbg(buf_msg(buf), ">BUILD>"); |
1390 | 1390 | ||
1391 | /* Chop up message: */ | 1391 | /* Chop up message: */ |
@@ -1416,8 +1416,8 @@ error: | |||
1416 | return -EFAULT; | 1416 | return -EFAULT; |
1417 | } | 1417 | } |
1418 | } else | 1418 | } else |
1419 | memcpy(buf->data + fragm_crs, sect_crs, sz); | 1419 | skb_copy_to_linear_data_offset(buf, fragm_crs, |
1420 | 1420 | sect_crs, sz); | |
1421 | sect_crs += sz; | 1421 | sect_crs += sz; |
1422 | sect_rest -= sz; | 1422 | sect_rest -= sz; |
1423 | fragm_crs += sz; | 1423 | fragm_crs += sz; |
@@ -1442,7 +1442,7 @@ error: | |||
1442 | 1442 | ||
1443 | buf->next = NULL; | 1443 | buf->next = NULL; |
1444 | prev->next = buf; | 1444 | prev->next = buf; |
1445 | memcpy(buf->data, (unchar *)&fragm_hdr, INT_H_SIZE); | 1445 | skb_copy_to_linear_data(buf, &fragm_hdr, INT_H_SIZE); |
1446 | fragm_crs = INT_H_SIZE; | 1446 | fragm_crs = INT_H_SIZE; |
1447 | fragm_rest = fragm_sz; | 1447 | fragm_rest = fragm_sz; |
1448 | msg_dbg(buf_msg(buf)," >BUILD>"); | 1448 | msg_dbg(buf_msg(buf)," >BUILD>"); |
@@ -2130,7 +2130,7 @@ void tipc_link_send_proto_msg(struct link *l_ptr, u32 msg_typ, int probe_msg, | |||
2130 | buf = l_ptr->proto_msg_queue; | 2130 | buf = l_ptr->proto_msg_queue; |
2131 | if (!buf) | 2131 | if (!buf) |
2132 | return; | 2132 | return; |
2133 | memcpy(buf->data, (unchar *)msg, sizeof(l_ptr->proto_msg)); | 2133 | skb_copy_to_linear_data(buf, msg, sizeof(l_ptr->proto_msg)); |
2134 | return; | 2134 | return; |
2135 | } | 2135 | } |
2136 | msg_set_timestamp(msg, jiffies_to_msecs(jiffies)); | 2136 | msg_set_timestamp(msg, jiffies_to_msecs(jiffies)); |
@@ -2143,7 +2143,7 @@ void tipc_link_send_proto_msg(struct link *l_ptr, u32 msg_typ, int probe_msg, | |||
2143 | if (!buf) | 2143 | if (!buf) |
2144 | return; | 2144 | return; |
2145 | 2145 | ||
2146 | memcpy(buf->data, (unchar *)msg, sizeof(l_ptr->proto_msg)); | 2146 | skb_copy_to_linear_data(buf, msg, sizeof(l_ptr->proto_msg)); |
2147 | msg_set_size(buf_msg(buf), msg_size); | 2147 | msg_set_size(buf_msg(buf), msg_size); |
2148 | 2148 | ||
2149 | if (tipc_bearer_send(l_ptr->b_ptr, buf, &l_ptr->media_addr)) { | 2149 | if (tipc_bearer_send(l_ptr->b_ptr, buf, &l_ptr->media_addr)) { |
@@ -2319,8 +2319,8 @@ void tipc_link_tunnel(struct link *l_ptr, | |||
2319 | "unable to send tunnel msg\n"); | 2319 | "unable to send tunnel msg\n"); |
2320 | return; | 2320 | return; |
2321 | } | 2321 | } |
2322 | memcpy(buf->data, (unchar *)tunnel_hdr, INT_H_SIZE); | 2322 | skb_copy_to_linear_data(buf, tunnel_hdr, INT_H_SIZE); |
2323 | memcpy(buf->data + INT_H_SIZE, (unchar *)msg, length); | 2323 | skb_copy_to_linear_data_offset(buf, INT_H_SIZE, msg, length); |
2324 | dbg("%c->%c:", l_ptr->b_ptr->net_plane, tunnel->b_ptr->net_plane); | 2324 | dbg("%c->%c:", l_ptr->b_ptr->net_plane, tunnel->b_ptr->net_plane); |
2325 | msg_dbg(buf_msg(buf), ">SEND>"); | 2325 | msg_dbg(buf_msg(buf), ">SEND>"); |
2326 | tipc_link_send_buf(tunnel, buf); | 2326 | tipc_link_send_buf(tunnel, buf); |
@@ -2361,7 +2361,7 @@ void tipc_link_changeover(struct link *l_ptr) | |||
2361 | 2361 | ||
2362 | buf = buf_acquire(INT_H_SIZE); | 2362 | buf = buf_acquire(INT_H_SIZE); |
2363 | if (buf) { | 2363 | if (buf) { |
2364 | memcpy(buf->data, (unchar *)&tunnel_hdr, INT_H_SIZE); | 2364 | skb_copy_to_linear_data(buf, &tunnel_hdr, INT_H_SIZE); |
2365 | msg_set_size(&tunnel_hdr, INT_H_SIZE); | 2365 | msg_set_size(&tunnel_hdr, INT_H_SIZE); |
2366 | dbg("%c->%c:", l_ptr->b_ptr->net_plane, | 2366 | dbg("%c->%c:", l_ptr->b_ptr->net_plane, |
2367 | tunnel->b_ptr->net_plane); | 2367 | tunnel->b_ptr->net_plane); |
@@ -2426,8 +2426,9 @@ void tipc_link_send_duplicate(struct link *l_ptr, struct link *tunnel) | |||
2426 | "unable to send duplicate msg\n"); | 2426 | "unable to send duplicate msg\n"); |
2427 | return; | 2427 | return; |
2428 | } | 2428 | } |
2429 | memcpy(outbuf->data, (unchar *)&tunnel_hdr, INT_H_SIZE); | 2429 | skb_copy_to_linear_data(outbuf, &tunnel_hdr, INT_H_SIZE); |
2430 | memcpy(outbuf->data + INT_H_SIZE, iter->data, length); | 2430 | skb_copy_to_linear_data_offset(outbuf, INT_H_SIZE, iter->data, |
2431 | length); | ||
2431 | dbg("%c->%c:", l_ptr->b_ptr->net_plane, | 2432 | dbg("%c->%c:", l_ptr->b_ptr->net_plane, |
2432 | tunnel->b_ptr->net_plane); | 2433 | tunnel->b_ptr->net_plane); |
2433 | msg_dbg(buf_msg(outbuf), ">SEND>"); | 2434 | msg_dbg(buf_msg(outbuf), ">SEND>"); |
@@ -2457,7 +2458,7 @@ static struct sk_buff *buf_extract(struct sk_buff *skb, u32 from_pos) | |||
2457 | 2458 | ||
2458 | eb = buf_acquire(size); | 2459 | eb = buf_acquire(size); |
2459 | if (eb) | 2460 | if (eb) |
2460 | memcpy(eb->data, (unchar *)msg, size); | 2461 | skb_copy_to_linear_data(eb, msg, size); |
2461 | return eb; | 2462 | return eb; |
2462 | } | 2463 | } |
2463 | 2464 | ||
@@ -2569,7 +2570,7 @@ void tipc_link_recv_bundle(struct sk_buff *buf) | |||
2569 | if (obuf == NULL) { | 2570 | if (obuf == NULL) { |
2570 | warn("Link unable to unbundle message(s)\n"); | 2571 | warn("Link unable to unbundle message(s)\n"); |
2571 | break; | 2572 | break; |
2572 | }; | 2573 | } |
2573 | pos += align(msg_size(buf_msg(obuf))); | 2574 | pos += align(msg_size(buf_msg(obuf))); |
2574 | msg_dbg(buf_msg(obuf), " /"); | 2575 | msg_dbg(buf_msg(obuf), " /"); |
2575 | tipc_net_route_msg(obuf); | 2576 | tipc_net_route_msg(obuf); |
@@ -2631,9 +2632,9 @@ int tipc_link_send_long_buf(struct link *l_ptr, struct sk_buff *buf) | |||
2631 | goto exit; | 2632 | goto exit; |
2632 | } | 2633 | } |
2633 | msg_set_size(&fragm_hdr, fragm_sz + INT_H_SIZE); | 2634 | msg_set_size(&fragm_hdr, fragm_sz + INT_H_SIZE); |
2634 | memcpy(fragm->data, (unchar *)&fragm_hdr, INT_H_SIZE); | 2635 | skb_copy_to_linear_data(fragm, &fragm_hdr, INT_H_SIZE); |
2635 | memcpy(fragm->data + INT_H_SIZE, crs, fragm_sz); | 2636 | skb_copy_to_linear_data_offset(fragm, INT_H_SIZE, crs, |
2636 | 2637 | fragm_sz); | |
2637 | /* Send queued messages first, if any: */ | 2638 | /* Send queued messages first, if any: */ |
2638 | 2639 | ||
2639 | l_ptr->stats.sent_fragments++; | 2640 | l_ptr->stats.sent_fragments++; |
@@ -2733,8 +2734,8 @@ int tipc_link_recv_fragment(struct sk_buff **pending, struct sk_buff **fb, | |||
2733 | if (pbuf != NULL) { | 2734 | if (pbuf != NULL) { |
2734 | pbuf->next = *pending; | 2735 | pbuf->next = *pending; |
2735 | *pending = pbuf; | 2736 | *pending = pbuf; |
2736 | memcpy(pbuf->data, (unchar *)imsg, msg_data_sz(fragm)); | 2737 | skb_copy_to_linear_data(pbuf, imsg, |
2737 | 2738 | msg_data_sz(fragm)); | |
2738 | /* Prepare buffer for subsequent fragments. */ | 2739 | /* Prepare buffer for subsequent fragments. */ |
2739 | 2740 | ||
2740 | set_long_msg_seqno(pbuf, long_msg_seq_no); | 2741 | set_long_msg_seqno(pbuf, long_msg_seq_no); |
@@ -2750,7 +2751,8 @@ int tipc_link_recv_fragment(struct sk_buff **pending, struct sk_buff **fb, | |||
2750 | u32 fsz = get_fragm_size(pbuf); | 2751 | u32 fsz = get_fragm_size(pbuf); |
2751 | u32 crs = ((msg_fragm_no(fragm) - 1) * fsz); | 2752 | u32 crs = ((msg_fragm_no(fragm) - 1) * fsz); |
2752 | u32 exp_frags = get_expected_frags(pbuf) - 1; | 2753 | u32 exp_frags = get_expected_frags(pbuf) - 1; |
2753 | memcpy(pbuf->data + crs, msg_data(fragm), dsz); | 2754 | skb_copy_to_linear_data_offset(pbuf, crs, |
2755 | msg_data(fragm), dsz); | ||
2754 | buf_discard(fbuf); | 2756 | buf_discard(fbuf); |
2755 | 2757 | ||
2756 | /* Is message complete? */ | 2758 | /* Is message complete? */ |
diff --git a/net/tipc/msg.h b/net/tipc/msg.h index 62d549063604..35d5ba1d4f42 100644 --- a/net/tipc/msg.h +++ b/net/tipc/msg.h | |||
@@ -1,8 +1,8 @@ | |||
1 | /* | 1 | /* |
2 | * net/tipc/msg.h: Include file for TIPC message header routines | 2 | * net/tipc/msg.h: Include file for TIPC message header routines |
3 | * | 3 | * |
4 | * Copyright (c) 2000-2006, Ericsson AB | 4 | * Copyright (c) 2000-2007, Ericsson AB |
5 | * Copyright (c) 2005, Wind River Systems | 5 | * Copyright (c) 2005-2007, Wind River Systems |
6 | * All rights reserved. | 6 | * All rights reserved. |
7 | * | 7 | * |
8 | * Redistribution and use in source and binary forms, with or without | 8 | * Redistribution and use in source and binary forms, with or without |
@@ -71,8 +71,11 @@ static inline void msg_set_word(struct tipc_msg *m, u32 w, u32 val) | |||
71 | static inline void msg_set_bits(struct tipc_msg *m, u32 w, | 71 | static inline void msg_set_bits(struct tipc_msg *m, u32 w, |
72 | u32 pos, u32 mask, u32 val) | 72 | u32 pos, u32 mask, u32 val) |
73 | { | 73 | { |
74 | u32 word = msg_word(m,w) & ~(mask << pos); | 74 | val = (val & mask) << pos; |
75 | msg_set_word(m, w, (word |= (val << pos))); | 75 | val = htonl(val); |
76 | mask = htonl(mask << pos); | ||
77 | m->hdr[w] &= ~mask; | ||
78 | m->hdr[w] |= val; | ||
76 | } | 79 | } |
77 | 80 | ||
78 | /* | 81 | /* |
@@ -786,15 +789,16 @@ static inline int msg_build(struct tipc_msg *hdr, | |||
786 | *buf = buf_acquire(sz); | 789 | *buf = buf_acquire(sz); |
787 | if (!(*buf)) | 790 | if (!(*buf)) |
788 | return -ENOMEM; | 791 | return -ENOMEM; |
789 | memcpy((*buf)->data, (unchar *)hdr, hsz); | 792 | skb_copy_to_linear_data(*buf, hdr, hsz); |
790 | for (res = 1, cnt = 0; res && (cnt < num_sect); cnt++) { | 793 | for (res = 1, cnt = 0; res && (cnt < num_sect); cnt++) { |
791 | if (likely(usrmem)) | 794 | if (likely(usrmem)) |
792 | res = !copy_from_user((*buf)->data + pos, | 795 | res = !copy_from_user((*buf)->data + pos, |
793 | msg_sect[cnt].iov_base, | 796 | msg_sect[cnt].iov_base, |
794 | msg_sect[cnt].iov_len); | 797 | msg_sect[cnt].iov_len); |
795 | else | 798 | else |
796 | memcpy((*buf)->data + pos, msg_sect[cnt].iov_base, | 799 | skb_copy_to_linear_data_offset(*buf, pos, |
797 | msg_sect[cnt].iov_len); | 800 | msg_sect[cnt].iov_base, |
801 | msg_sect[cnt].iov_len); | ||
798 | pos += msg_sect[cnt].iov_len; | 802 | pos += msg_sect[cnt].iov_len; |
799 | } | 803 | } |
800 | if (likely(res)) | 804 | if (likely(res)) |
diff --git a/net/tipc/netlink.c b/net/tipc/netlink.c index b8e1edc2badc..4cdafa2d1d4d 100644 --- a/net/tipc/netlink.c +++ b/net/tipc/netlink.c | |||
@@ -57,7 +57,7 @@ static int handle_cmd(struct sk_buff *skb, struct genl_info *info) | |||
57 | 57 | ||
58 | if (rep_buf) { | 58 | if (rep_buf) { |
59 | skb_push(rep_buf, hdr_space); | 59 | skb_push(rep_buf, hdr_space); |
60 | rep_nlh = (struct nlmsghdr *)rep_buf->data; | 60 | rep_nlh = nlmsg_hdr(rep_buf); |
61 | memcpy(rep_nlh, req_nlh, hdr_space); | 61 | memcpy(rep_nlh, req_nlh, hdr_space); |
62 | rep_nlh->nlmsg_len = rep_buf->len; | 62 | rep_nlh->nlmsg_len = rep_buf->len; |
63 | genlmsg_unicast(rep_buf, req_nlh->nlmsg_pid); | 63 | genlmsg_unicast(rep_buf, req_nlh->nlmsg_pid); |
diff --git a/net/tipc/port.c b/net/tipc/port.c index 5f8217d4b452..bcd5da00737b 100644 --- a/net/tipc/port.c +++ b/net/tipc/port.c | |||
@@ -464,7 +464,7 @@ int tipc_reject_msg(struct sk_buff *buf, u32 err) | |||
464 | msg_set_size(rmsg, data_sz + hdr_sz); | 464 | msg_set_size(rmsg, data_sz + hdr_sz); |
465 | msg_set_nametype(rmsg, msg_nametype(msg)); | 465 | msg_set_nametype(rmsg, msg_nametype(msg)); |
466 | msg_set_nameinst(rmsg, msg_nameinst(msg)); | 466 | msg_set_nameinst(rmsg, msg_nameinst(msg)); |
467 | memcpy(rbuf->data + hdr_sz, msg_data(msg), data_sz); | 467 | skb_copy_to_linear_data_offset(rbuf, hdr_sz, msg_data(msg), data_sz); |
468 | 468 | ||
469 | /* send self-abort message when rejecting on a connected port */ | 469 | /* send self-abort message when rejecting on a connected port */ |
470 | if (msg_connected(msg)) { | 470 | if (msg_connected(msg)) { |
@@ -1419,7 +1419,7 @@ int tipc_send_buf(u32 ref, struct sk_buff *buf, unsigned int dsz) | |||
1419 | return -ENOMEM; | 1419 | return -ENOMEM; |
1420 | 1420 | ||
1421 | skb_push(buf, hsz); | 1421 | skb_push(buf, hsz); |
1422 | memcpy(buf->data, (unchar *)msg, hsz); | 1422 | skb_copy_to_linear_data(buf, msg, hsz); |
1423 | destnode = msg_destnode(msg); | 1423 | destnode = msg_destnode(msg); |
1424 | p_ptr->publ.congested = 1; | 1424 | p_ptr->publ.congested = 1; |
1425 | if (!tipc_port_congested(p_ptr)) { | 1425 | if (!tipc_port_congested(p_ptr)) { |
@@ -1555,7 +1555,7 @@ int tipc_forward_buf2name(u32 ref, | |||
1555 | if (skb_cow(buf, LONG_H_SIZE)) | 1555 | if (skb_cow(buf, LONG_H_SIZE)) |
1556 | return -ENOMEM; | 1556 | return -ENOMEM; |
1557 | skb_push(buf, LONG_H_SIZE); | 1557 | skb_push(buf, LONG_H_SIZE); |
1558 | memcpy(buf->data, (unchar *)msg, LONG_H_SIZE); | 1558 | skb_copy_to_linear_data(buf, msg, LONG_H_SIZE); |
1559 | msg_dbg(buf_msg(buf),"PREP:"); | 1559 | msg_dbg(buf_msg(buf),"PREP:"); |
1560 | if (likely(destport || destnode)) { | 1560 | if (likely(destport || destnode)) { |
1561 | p_ptr->sent++; | 1561 | p_ptr->sent++; |
@@ -1679,7 +1679,7 @@ int tipc_forward_buf2port(u32 ref, | |||
1679 | return -ENOMEM; | 1679 | return -ENOMEM; |
1680 | 1680 | ||
1681 | skb_push(buf, DIR_MSG_H_SIZE); | 1681 | skb_push(buf, DIR_MSG_H_SIZE); |
1682 | memcpy(buf->data, (unchar *)msg, DIR_MSG_H_SIZE); | 1682 | skb_copy_to_linear_data(buf, msg, DIR_MSG_H_SIZE); |
1683 | msg_dbg(msg, "buf2port: "); | 1683 | msg_dbg(msg, "buf2port: "); |
1684 | p_ptr->sent++; | 1684 | p_ptr->sent++; |
1685 | if (dest->node == tipc_own_addr) | 1685 | if (dest->node == tipc_own_addr) |
diff --git a/net/tipc/socket.c b/net/tipc/socket.c index b71739fbe2c6..45832fb75ea4 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c | |||
@@ -1020,7 +1020,7 @@ restart: | |||
1020 | 1020 | ||
1021 | if (!err) { | 1021 | if (!err) { |
1022 | buf_crs = (unsigned char *)(TIPC_SKB_CB(buf)->handle); | 1022 | buf_crs = (unsigned char *)(TIPC_SKB_CB(buf)->handle); |
1023 | sz = buf->tail - buf_crs; | 1023 | sz = skb_tail_pointer(buf) - buf_crs; |
1024 | 1024 | ||
1025 | needed = (buf_len - sz_copied); | 1025 | needed = (buf_len - sz_copied); |
1026 | sz_to_copy = (sz <= needed) ? sz : needed; | 1026 | sz_to_copy = (sz <= needed) ? sz : needed; |