diff options
Diffstat (limited to 'net/tipc/msg.c')
-rw-r--r-- | net/tipc/msg.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/tipc/msg.c b/net/tipc/msg.c index 9155496b8a8a..94db39217248 100644 --- a/net/tipc/msg.c +++ b/net/tipc/msg.c | |||
@@ -289,7 +289,7 @@ bool tipc_msg_bundle(struct sk_buff *bbuf, struct sk_buff *buf, u32 mtu) | |||
289 | return false; | 289 | return false; |
290 | if (likely(msg_user(bmsg) != MSG_BUNDLER)) | 290 | if (likely(msg_user(bmsg) != MSG_BUNDLER)) |
291 | return false; | 291 | return false; |
292 | if (likely(msg_type(bmsg) != BUNDLE_OPEN)) | 292 | if (likely(!TIPC_SKB_CB(bbuf)->bundling)) |
293 | return false; | 293 | return false; |
294 | if (unlikely(skb_tailroom(bbuf) < (pad + msz))) | 294 | if (unlikely(skb_tailroom(bbuf) < (pad + msz))) |
295 | return false; | 295 | return false; |
@@ -336,11 +336,12 @@ bool tipc_msg_make_bundle(struct sk_buff **buf, u32 mtu, u32 dnode) | |||
336 | 336 | ||
337 | skb_trim(bbuf, INT_H_SIZE); | 337 | skb_trim(bbuf, INT_H_SIZE); |
338 | bmsg = buf_msg(bbuf); | 338 | bmsg = buf_msg(bbuf); |
339 | tipc_msg_init(bmsg, MSG_BUNDLER, BUNDLE_OPEN, INT_H_SIZE, dnode); | 339 | tipc_msg_init(bmsg, MSG_BUNDLER, 0, INT_H_SIZE, dnode); |
340 | msg_set_seqno(bmsg, msg_seqno(msg)); | 340 | msg_set_seqno(bmsg, msg_seqno(msg)); |
341 | msg_set_ack(bmsg, msg_ack(msg)); | 341 | msg_set_ack(bmsg, msg_ack(msg)); |
342 | msg_set_bcast_ack(bmsg, msg_bcast_ack(msg)); | 342 | msg_set_bcast_ack(bmsg, msg_bcast_ack(msg)); |
343 | bbuf->next = (*buf)->next; | 343 | bbuf->next = (*buf)->next; |
344 | TIPC_SKB_CB(bbuf)->bundling = true; | ||
344 | tipc_msg_bundle(bbuf, *buf, mtu); | 345 | tipc_msg_bundle(bbuf, *buf, mtu); |
345 | *buf = bbuf; | 346 | *buf = bbuf; |
346 | return true; | 347 | return true; |