| .. | .. |
|---|
| 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); |
|---|