diff options
Diffstat (limited to 'net/tipc/link.c')
-rw-r--r-- | net/tipc/link.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/net/tipc/link.c b/net/tipc/link.c index ff40c9195fef..2efced5a673c 100644 --- a/net/tipc/link.c +++ b/net/tipc/link.c | |||
@@ -574,7 +574,6 @@ void tipc_link_wakeup_ports(struct link *l_ptr, int all) | |||
574 | break; | 574 | break; |
575 | list_del_init(&p_ptr->wait_list); | 575 | list_del_init(&p_ptr->wait_list); |
576 | p_ptr->congested_link = NULL; | 576 | p_ptr->congested_link = NULL; |
577 | assert(p_ptr->wakeup); | ||
578 | spin_lock_bh(p_ptr->publ.lock); | 577 | spin_lock_bh(p_ptr->publ.lock); |
579 | p_ptr->publ.congested = 0; | 578 | p_ptr->publ.congested = 0; |
580 | p_ptr->wakeup(&p_ptr->publ); | 579 | p_ptr->wakeup(&p_ptr->publ); |
@@ -1246,8 +1245,6 @@ int tipc_link_send_sections_fast(struct port *sender, | |||
1246 | int res; | 1245 | int res; |
1247 | u32 selector = msg_origport(hdr) & 1; | 1246 | u32 selector = msg_origport(hdr) & 1; |
1248 | 1247 | ||
1249 | assert(destaddr != tipc_own_addr); | ||
1250 | |||
1251 | again: | 1248 | again: |
1252 | /* | 1249 | /* |
1253 | * Try building message using port's max_pkt hint. | 1250 | * Try building message using port's max_pkt hint. |
@@ -2310,7 +2307,6 @@ void tipc_link_tunnel(struct link *l_ptr, | |||
2310 | memcpy(buf->data + INT_H_SIZE, (unchar *)msg, length); | 2307 | memcpy(buf->data + INT_H_SIZE, (unchar *)msg, length); |
2311 | dbg("%c->%c:", l_ptr->b_ptr->net_plane, tunnel->b_ptr->net_plane); | 2308 | dbg("%c->%c:", l_ptr->b_ptr->net_plane, tunnel->b_ptr->net_plane); |
2312 | msg_dbg(buf_msg(buf), ">SEND>"); | 2309 | msg_dbg(buf_msg(buf), ">SEND>"); |
2313 | assert(tunnel); | ||
2314 | tipc_link_send_buf(tunnel, buf); | 2310 | tipc_link_send_buf(tunnel, buf); |
2315 | } | 2311 | } |
2316 | 2312 | ||
@@ -2339,10 +2335,10 @@ void tipc_link_changeover(struct link *l_ptr) | |||
2339 | ORIGINAL_MSG, TIPC_OK, INT_H_SIZE, l_ptr->addr); | 2335 | ORIGINAL_MSG, TIPC_OK, INT_H_SIZE, l_ptr->addr); |
2340 | msg_set_bearer_id(&tunnel_hdr, l_ptr->peer_bearer_id); | 2336 | msg_set_bearer_id(&tunnel_hdr, l_ptr->peer_bearer_id); |
2341 | msg_set_msgcnt(&tunnel_hdr, msgcount); | 2337 | msg_set_msgcnt(&tunnel_hdr, msgcount); |
2338 | |||
2342 | if (!l_ptr->first_out) { | 2339 | if (!l_ptr->first_out) { |
2343 | struct sk_buff *buf; | 2340 | struct sk_buff *buf; |
2344 | 2341 | ||
2345 | assert(!msgcount); | ||
2346 | buf = buf_acquire(INT_H_SIZE); | 2342 | buf = buf_acquire(INT_H_SIZE); |
2347 | if (buf) { | 2343 | if (buf) { |
2348 | memcpy(buf->data, (unchar *)&tunnel_hdr, INT_H_SIZE); | 2344 | memcpy(buf->data, (unchar *)&tunnel_hdr, INT_H_SIZE); |
@@ -2356,6 +2352,7 @@ void tipc_link_changeover(struct link *l_ptr) | |||
2356 | } | 2352 | } |
2357 | return; | 2353 | return; |
2358 | } | 2354 | } |
2355 | |||
2359 | while (crs) { | 2356 | while (crs) { |
2360 | struct tipc_msg *msg = buf_msg(crs); | 2357 | struct tipc_msg *msg = buf_msg(crs); |
2361 | 2358 | ||
@@ -2455,11 +2452,15 @@ static int link_recv_changeover_msg(struct link **l_ptr, | |||
2455 | u32 msg_count = msg_msgcnt(tunnel_msg); | 2452 | u32 msg_count = msg_msgcnt(tunnel_msg); |
2456 | 2453 | ||
2457 | dest_link = (*l_ptr)->owner->links[msg_bearer_id(tunnel_msg)]; | 2454 | dest_link = (*l_ptr)->owner->links[msg_bearer_id(tunnel_msg)]; |
2458 | assert(dest_link != *l_ptr); | ||
2459 | if (!dest_link) { | 2455 | if (!dest_link) { |
2460 | msg_dbg(tunnel_msg, "NOLINK/<REC<"); | 2456 | msg_dbg(tunnel_msg, "NOLINK/<REC<"); |
2461 | goto exit; | 2457 | goto exit; |
2462 | } | 2458 | } |
2459 | if (dest_link == *l_ptr) { | ||
2460 | err("Unexpected changeover message on link <%s>\n", | ||
2461 | (*l_ptr)->name); | ||
2462 | goto exit; | ||
2463 | } | ||
2463 | dbg("%c<-%c:", dest_link->b_ptr->net_plane, | 2464 | dbg("%c<-%c:", dest_link->b_ptr->net_plane, |
2464 | (*l_ptr)->b_ptr->net_plane); | 2465 | (*l_ptr)->b_ptr->net_plane); |
2465 | *l_ptr = dest_link; | 2466 | *l_ptr = dest_link; |