diff options
Diffstat (limited to 'net/tipc/msg.c')
-rw-r--r-- | net/tipc/msg.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/tipc/msg.c b/net/tipc/msg.c index dcd90e6fa7c3..6ef379f004ac 100644 --- a/net/tipc/msg.c +++ b/net/tipc/msg.c | |||
@@ -479,13 +479,14 @@ bool tipc_msg_make_bundle(struct sk_buff **skb, struct tipc_msg *msg, | |||
479 | bool tipc_msg_reverse(u32 own_node, struct sk_buff **skb, int err) | 479 | bool tipc_msg_reverse(u32 own_node, struct sk_buff **skb, int err) |
480 | { | 480 | { |
481 | struct sk_buff *_skb = *skb; | 481 | struct sk_buff *_skb = *skb; |
482 | struct tipc_msg *hdr = buf_msg(_skb); | 482 | struct tipc_msg *hdr; |
483 | struct tipc_msg ohdr; | 483 | struct tipc_msg ohdr; |
484 | int dlen = min_t(uint, msg_data_sz(hdr), MAX_FORWARD_SIZE); | 484 | int dlen; |
485 | 485 | ||
486 | if (skb_linearize(_skb)) | 486 | if (skb_linearize(_skb)) |
487 | goto exit; | 487 | goto exit; |
488 | hdr = buf_msg(_skb); | 488 | hdr = buf_msg(_skb); |
489 | dlen = min_t(uint, msg_data_sz(hdr), MAX_FORWARD_SIZE); | ||
489 | if (msg_dest_droppable(hdr)) | 490 | if (msg_dest_droppable(hdr)) |
490 | goto exit; | 491 | goto exit; |
491 | if (msg_errcode(hdr)) | 492 | if (msg_errcode(hdr)) |
@@ -511,6 +512,8 @@ bool tipc_msg_reverse(u32 own_node, struct sk_buff **skb, int err) | |||
511 | pskb_expand_head(_skb, BUF_HEADROOM, BUF_TAILROOM, GFP_ATOMIC)) | 512 | pskb_expand_head(_skb, BUF_HEADROOM, BUF_TAILROOM, GFP_ATOMIC)) |
512 | goto exit; | 513 | goto exit; |
513 | 514 | ||
515 | /* reassign after skb header modifications */ | ||
516 | hdr = buf_msg(_skb); | ||
514 | /* Now reverse the concerned fields */ | 517 | /* Now reverse the concerned fields */ |
515 | msg_set_errcode(hdr, err); | 518 | msg_set_errcode(hdr, err); |
516 | msg_set_non_seq(hdr, 0); | 519 | msg_set_non_seq(hdr, 0); |