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 ---