diff options
Diffstat (limited to 'net/tipc/msg.c')
| -rw-r--r-- | net/tipc/msg.c | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/net/tipc/msg.c b/net/tipc/msg.c index f2db8a87d9c5..ced60e2fc4f7 100644 --- a/net/tipc/msg.c +++ b/net/tipc/msg.c | |||
| @@ -51,8 +51,8 @@ u32 tipc_msg_tot_importance(struct tipc_msg *m) | |||
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | 53 | ||
| 54 | void tipc_msg_init(struct tipc_msg *m, u32 user, u32 type, | 54 | void tipc_msg_init(struct tipc_msg *m, u32 user, u32 type, u32 hsize, |
| 55 | u32 hsize, u32 destnode) | 55 | u32 destnode) |
| 56 | { | 56 | { |
| 57 | memset(m, 0, hsize); | 57 | memset(m, 0, hsize); |
| 58 | msg_set_version(m); | 58 | msg_set_version(m); |
| @@ -73,8 +73,8 @@ void tipc_msg_init(struct tipc_msg *m, u32 user, u32 type, | |||
| 73 | * Returns message data size or errno | 73 | * Returns message data size or errno |
| 74 | */ | 74 | */ |
| 75 | int tipc_msg_build(struct tipc_msg *hdr, struct iovec const *msg_sect, | 75 | int tipc_msg_build(struct tipc_msg *hdr, struct iovec const *msg_sect, |
| 76 | u32 num_sect, unsigned int total_len, | 76 | u32 num_sect, unsigned int total_len, int max_size, |
| 77 | int max_size, int usrmem, struct sk_buff **buf) | 77 | struct sk_buff **buf) |
| 78 | { | 78 | { |
| 79 | int dsz, sz, hsz, pos, res, cnt; | 79 | int dsz, sz, hsz, pos, res, cnt; |
| 80 | 80 | ||
| @@ -92,14 +92,9 @@ int tipc_msg_build(struct tipc_msg *hdr, struct iovec const *msg_sect, | |||
| 92 | return -ENOMEM; | 92 | return -ENOMEM; |
| 93 | skb_copy_to_linear_data(*buf, hdr, hsz); | 93 | skb_copy_to_linear_data(*buf, hdr, hsz); |
| 94 | for (res = 1, cnt = 0; res && (cnt < num_sect); cnt++) { | 94 | for (res = 1, cnt = 0; res && (cnt < num_sect); cnt++) { |
| 95 | if (likely(usrmem)) | 95 | skb_copy_to_linear_data_offset(*buf, pos, |
| 96 | res = !copy_from_user((*buf)->data + pos, | 96 | msg_sect[cnt].iov_base, |
| 97 | msg_sect[cnt].iov_base, | 97 | msg_sect[cnt].iov_len); |
| 98 | msg_sect[cnt].iov_len); | ||
| 99 | else | ||
| 100 | skb_copy_to_linear_data_offset(*buf, pos, | ||
| 101 | msg_sect[cnt].iov_base, | ||
| 102 | msg_sect[cnt].iov_len); | ||
| 103 | pos += msg_sect[cnt].iov_len; | 98 | pos += msg_sect[cnt].iov_len; |
| 104 | } | 99 | } |
| 105 | if (likely(res)) | 100 | if (likely(res)) |
