aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/link.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/link.c')
-rw-r--r--net/tipc/link.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/net/tipc/link.c b/net/tipc/link.c
index 0a4c3a1bb9cc..d34429d03c16 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -1081,7 +1081,7 @@ again:
1081 * (Must not hold any locks while building message.) 1081 * (Must not hold any locks while building message.)
1082 */ 1082 */
1083 res = tipc_msg_build(hdr, msg_sect, num_sect, total_len, 1083 res = tipc_msg_build(hdr, msg_sect, num_sect, total_len,
1084 sender->max_pkt, !sender->user_port, &buf); 1084 sender->max_pkt, &buf);
1085 1085
1086 read_lock_bh(&tipc_net_lock); 1086 read_lock_bh(&tipc_net_lock);
1087 node = tipc_node_find(destaddr); 1087 node = tipc_node_find(destaddr);
@@ -1216,18 +1216,14 @@ again:
1216 else 1216 else
1217 sz = fragm_rest; 1217 sz = fragm_rest;
1218 1218
1219 if (likely(!sender->user_port)) { 1219 if (copy_from_user(buf->data + fragm_crs, sect_crs, sz)) {
1220 if (copy_from_user(buf->data + fragm_crs, sect_crs, sz)) {
1221error: 1220error:
1222 for (; buf_chain; buf_chain = buf) { 1221 for (; buf_chain; buf_chain = buf) {
1223 buf = buf_chain->next; 1222 buf = buf_chain->next;
1224 kfree_skb(buf_chain); 1223 kfree_skb(buf_chain);
1225 }
1226 return -EFAULT;
1227 } 1224 }
1228 } else 1225 return -EFAULT;
1229 skb_copy_to_linear_data_offset(buf, fragm_crs, 1226 }
1230 sect_crs, sz);
1231 sect_crs += sz; 1227 sect_crs += sz;
1232 sect_rest -= sz; 1228 sect_rest -= sz;
1233 fragm_crs += sz; 1229 fragm_crs += sz;