diff options
Diffstat (limited to 'net/tipc/port.c')
-rw-r--r-- | net/tipc/port.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/net/tipc/port.c b/net/tipc/port.c index b9c8c6b9e94f..b7f3199523ca 100644 --- a/net/tipc/port.c +++ b/net/tipc/port.c | |||
@@ -505,8 +505,13 @@ static void port_timeout(unsigned long ref) | |||
505 | struct port *p_ptr = tipc_port_lock(ref); | 505 | struct port *p_ptr = tipc_port_lock(ref); |
506 | struct sk_buff *buf = NULL; | 506 | struct sk_buff *buf = NULL; |
507 | 507 | ||
508 | if (!p_ptr || !p_ptr->publ.connected) | 508 | if (!p_ptr) |
509 | return; | ||
510 | |||
511 | if (!p_ptr->publ.connected) { | ||
512 | tipc_port_unlock(p_ptr); | ||
509 | return; | 513 | return; |
514 | } | ||
510 | 515 | ||
511 | /* Last probe answered ? */ | 516 | /* Last probe answered ? */ |
512 | if (p_ptr->probing_state == PROBING) { | 517 | if (p_ptr->probing_state == PROBING) { |
@@ -1131,11 +1136,12 @@ int tipc_publish(u32 ref, unsigned int scope, struct tipc_name_seq const *seq) | |||
1131 | int res = -EINVAL; | 1136 | int res = -EINVAL; |
1132 | 1137 | ||
1133 | p_ptr = tipc_port_lock(ref); | 1138 | p_ptr = tipc_port_lock(ref); |
1139 | if (!p_ptr) | ||
1140 | return -EINVAL; | ||
1141 | |||
1134 | dbg("tipc_publ %u, p_ptr = %x, conn = %x, scope = %x, " | 1142 | dbg("tipc_publ %u, p_ptr = %x, conn = %x, scope = %x, " |
1135 | "lower = %u, upper = %u\n", | 1143 | "lower = %u, upper = %u\n", |
1136 | ref, p_ptr, p_ptr->publ.connected, scope, seq->lower, seq->upper); | 1144 | ref, p_ptr, p_ptr->publ.connected, scope, seq->lower, seq->upper); |
1137 | if (!p_ptr) | ||
1138 | return -EINVAL; | ||
1139 | if (p_ptr->publ.connected) | 1145 | if (p_ptr->publ.connected) |
1140 | goto exit; | 1146 | goto exit; |
1141 | if (seq->lower > seq->upper) | 1147 | if (seq->lower > seq->upper) |