msg.c (cc9b94029e9ef51787af908e9856b1eed314bc00) | msg.c (cbbd26b8b1a6af9c02e2b6523e12bd50cc765059) |
---|---|
1/* 2 * net/tipc/msg.c: TIPC message header routines 3 * 4 * Copyright (c) 2000-2006, 2014-2015, Ericsson AB 5 * Copyright (c) 2005, 2010-2011, Wind River Systems 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 254 unchanged lines hidden (view full) --- 263 if (likely(msz <= pktmax)) { 264 skb = tipc_buf_acquire(msz); 265 if (unlikely(!skb)) 266 return -ENOMEM; 267 skb_orphan(skb); 268 __skb_queue_tail(list, skb); 269 skb_copy_to_linear_data(skb, mhdr, mhsz); 270 pktpos = skb->data + mhsz; | 1/* 2 * net/tipc/msg.c: TIPC message header routines 3 * 4 * Copyright (c) 2000-2006, 2014-2015, Ericsson AB 5 * Copyright (c) 2005, 2010-2011, Wind River Systems 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 254 unchanged lines hidden (view full) --- 263 if (likely(msz <= pktmax)) { 264 skb = tipc_buf_acquire(msz); 265 if (unlikely(!skb)) 266 return -ENOMEM; 267 skb_orphan(skb); 268 __skb_queue_tail(list, skb); 269 skb_copy_to_linear_data(skb, mhdr, mhsz); 270 pktpos = skb->data + mhsz; |
271 if (copy_from_iter(pktpos, dsz, &m->msg_iter) == dsz) | 271 if (copy_from_iter_full(pktpos, dsz, &m->msg_iter)) |
272 return dsz; 273 rc = -EFAULT; 274 goto error; 275 } 276 277 /* Prepare reusable fragment header */ 278 tipc_msg_init(msg_prevnode(mhdr), &pkthdr, MSG_FRAGMENTER, 279 FIRST_FRAGMENT, INT_H_SIZE, msg_destnode(mhdr)); --- 14 unchanged lines hidden (view full) --- 294 skb_copy_to_linear_data_offset(skb, INT_H_SIZE, mhdr, mhsz); 295 pktpos += mhsz; 296 pktrem -= mhsz; 297 298 do { 299 if (drem < pktrem) 300 pktrem = drem; 301 | 272 return dsz; 273 rc = -EFAULT; 274 goto error; 275 } 276 277 /* Prepare reusable fragment header */ 278 tipc_msg_init(msg_prevnode(mhdr), &pkthdr, MSG_FRAGMENTER, 279 FIRST_FRAGMENT, INT_H_SIZE, msg_destnode(mhdr)); --- 14 unchanged lines hidden (view full) --- 294 skb_copy_to_linear_data_offset(skb, INT_H_SIZE, mhdr, mhsz); 295 pktpos += mhsz; 296 pktrem -= mhsz; 297 298 do { 299 if (drem < pktrem) 300 pktrem = drem; 301 |
302 if (copy_from_iter(pktpos, pktrem, &m->msg_iter) != pktrem) { | 302 if (!copy_from_iter_full(pktpos, pktrem, &m->msg_iter)) { |
303 rc = -EFAULT; 304 goto error; 305 } 306 drem -= pktrem; 307 308 if (!drem) 309 break; 310 --- 329 unchanged lines hidden --- | 303 rc = -EFAULT; 304 goto error; 305 } 306 drem -= pktrem; 307 308 if (!drem) 309 break; 310 --- 329 unchanged lines hidden --- |