From a1d60146f4c17f3d67e208d446e10c389438df5d Mon Sep 17 00:00:00 2001 From: Allan Stephens Date: Mon, 23 May 2011 13:47:44 -0400 Subject: [PATCH] --- yaml --- r: 255911 b: refs/heads/master c: acc631bf6f597b36f3f014e12e69c710da610027 h: refs/heads/master i: 255909: ec83121c1d09b60f2bf2cc9c5c5c6b0f69fefe23 255907: ba6b51ffd780c24db975daa182078e79405c3d8a 255903: 6c36b817c685e52eb52641c5e69188a6e5b6ed4e v: v3 --- [refs] | 2 +- trunk/net/tipc/port.c | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index 64e6227b9045..a1bc0062ccd8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7ae4738e9e46a2f88e5d1332b7397bb96c527c44 +refs/heads/master: acc631bf6f597b36f3f014e12e69c710da610027 diff --git a/trunk/net/tipc/port.c b/trunk/net/tipc/port.c index c68dc956a423..3946b5b10c74 100644 --- a/trunk/net/tipc/port.c +++ b/trunk/net/tipc/port.c @@ -367,10 +367,8 @@ int tipc_reject_msg(struct sk_buff *buf, u32 err) imp++; /* discard rejected message if it shouldn't be returned to sender */ - if (msg_errcode(msg) || msg_dest_droppable(msg)) { - buf_discard(buf); - return data_sz; - } + if (msg_errcode(msg) || msg_dest_droppable(msg)) + goto exit; /* construct rejected message */ if (msg_mcast(msg)) @@ -378,10 +376,9 @@ int tipc_reject_msg(struct sk_buff *buf, u32 err) else hdr_sz = LONG_H_SIZE; rbuf = tipc_buf_acquire(data_sz + hdr_sz); - if (rbuf == NULL) { - buf_discard(buf); - return data_sz; - } + if (rbuf == NULL) + goto exit; + rmsg = buf_msg(rbuf); tipc_msg_init(rmsg, imp, msg_type(msg), hdr_sz, msg_orignode(msg)); msg_set_errcode(rmsg, err); @@ -411,9 +408,11 @@ int tipc_reject_msg(struct sk_buff *buf, u32 err) tipc_net_route_msg(abuf); } - /* send rejected message */ - buf_discard(buf); + /* send returned message & dispose of rejected message */ + tipc_net_route_msg(rbuf); +exit: + buf_discard(buf); return data_sz; }