.. | .. |
---|
973 | 973 | siw_cep_put(cep); |
---|
974 | 974 | new_cep->listen_cep = NULL; |
---|
975 | 975 | if (rv) { |
---|
| 976 | + siw_cancel_mpatimer(new_cep); |
---|
976 | 977 | siw_cep_set_free(new_cep); |
---|
977 | 978 | goto error; |
---|
978 | 979 | } |
---|
.. | .. |
---|
1097 | 1098 | /* |
---|
1098 | 1099 | * Socket close before MPA request received. |
---|
1099 | 1100 | */ |
---|
1100 | | - siw_dbg_cep(cep, "no mpareq: drop listener\n"); |
---|
1101 | | - siw_cep_put(cep->listen_cep); |
---|
1102 | | - cep->listen_cep = NULL; |
---|
| 1101 | + if (cep->listen_cep) { |
---|
| 1102 | + siw_dbg_cep(cep, |
---|
| 1103 | + "no mpareq: drop listener\n"); |
---|
| 1104 | + siw_cep_put(cep->listen_cep); |
---|
| 1105 | + cep->listen_cep = NULL; |
---|
| 1106 | + } |
---|
1103 | 1107 | } |
---|
1104 | 1108 | } |
---|
1105 | 1109 | release_cep = 1; |
---|
.. | .. |
---|
1222 | 1226 | if (!cep) |
---|
1223 | 1227 | goto out; |
---|
1224 | 1228 | |
---|
1225 | | - siw_dbg_cep(cep, "state: %d\n", cep->state); |
---|
| 1229 | + siw_dbg_cep(cep, "cep state: %d, socket state %d\n", |
---|
| 1230 | + cep->state, sk->sk_state); |
---|
| 1231 | + |
---|
| 1232 | + if (sk->sk_state != TCP_ESTABLISHED) |
---|
| 1233 | + goto out; |
---|
1226 | 1234 | |
---|
1227 | 1235 | switch (cep->state) { |
---|
1228 | 1236 | case SIW_EPSTATE_RDMA_MODE: |
---|
.. | .. |
---|
1490 | 1498 | |
---|
1491 | 1499 | cep->cm_id = NULL; |
---|
1492 | 1500 | id->rem_ref(id); |
---|
1493 | | - siw_cep_put(cep); |
---|
1494 | 1501 | |
---|
1495 | 1502 | qp->cep = NULL; |
---|
1496 | 1503 | siw_cep_put(cep); |
---|