mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 04:21:03 -04:00
RDMA/siw: Introduce siw_cep_set_free_and_put
Add the helper which can be used in some places. Acked-by: Bernard Metzler <bmt@zurich.ibm.com> Signed-off-by: Guoqing Jiang <guoqing.jiang@linux.dev> Link: https://lore.kernel.org/r/20231113115726.12762-11-guoqing.jiang@linux.dev Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
committed by
Leon Romanovsky
parent
25680c1f26
commit
b5c9154320
@@ -444,6 +444,12 @@ void siw_cep_put(struct siw_cep *cep)
|
||||
kref_put(&cep->ref, __siw_cep_dealloc);
|
||||
}
|
||||
|
||||
static void siw_cep_set_free_and_put(struct siw_cep *cep)
|
||||
{
|
||||
siw_cep_set_free(cep);
|
||||
siw_cep_put(cep);
|
||||
}
|
||||
|
||||
void siw_cep_get(struct siw_cep *cep)
|
||||
{
|
||||
kref_get(&cep->ref);
|
||||
@@ -1514,9 +1520,7 @@ int siw_connect(struct iw_cm_id *id, struct iw_cm_conn_param *params)
|
||||
|
||||
cep->state = SIW_EPSTATE_CLOSED;
|
||||
|
||||
siw_cep_set_free(cep);
|
||||
|
||||
siw_cep_put(cep);
|
||||
siw_cep_set_free_and_put(cep);
|
||||
|
||||
} else if (s) {
|
||||
sock_release(s);
|
||||
@@ -1564,16 +1568,14 @@ int siw_accept(struct iw_cm_id *id, struct iw_cm_conn_param *params)
|
||||
if (cep->state != SIW_EPSTATE_RECVD_MPAREQ) {
|
||||
siw_dbg_cep(cep, "out of state\n");
|
||||
|
||||
siw_cep_set_free(cep);
|
||||
siw_cep_put(cep);
|
||||
siw_cep_set_free_and_put(cep);
|
||||
|
||||
return -ECONNRESET;
|
||||
}
|
||||
qp = siw_qp_id2obj(sdev, params->qpn);
|
||||
if (!qp) {
|
||||
WARN(1, "[QP %d] does not exist\n", params->qpn);
|
||||
siw_cep_set_free(cep);
|
||||
siw_cep_put(cep);
|
||||
siw_cep_set_free_and_put(cep);
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -1719,8 +1721,7 @@ int siw_accept(struct iw_cm_id *id, struct iw_cm_conn_param *params)
|
||||
cep->qp = NULL;
|
||||
siw_qp_put(qp);
|
||||
|
||||
siw_cep_set_free(cep);
|
||||
siw_cep_put(cep);
|
||||
siw_cep_set_free_and_put(cep);
|
||||
|
||||
return rv;
|
||||
}
|
||||
@@ -1743,8 +1744,7 @@ int siw_reject(struct iw_cm_id *id, const void *pdata, u8 pd_len)
|
||||
if (cep->state != SIW_EPSTATE_RECVD_MPAREQ) {
|
||||
siw_dbg_cep(cep, "out of state\n");
|
||||
|
||||
siw_cep_set_free(cep);
|
||||
siw_cep_put(cep); /* put last reference */
|
||||
siw_cep_set_free_and_put(cep); /* put last reference */
|
||||
|
||||
return -ECONNRESET;
|
||||
}
|
||||
@@ -1761,8 +1761,7 @@ int siw_reject(struct iw_cm_id *id, const void *pdata, u8 pd_len)
|
||||
|
||||
cep->state = SIW_EPSTATE_CLOSED;
|
||||
|
||||
siw_cep_set_free(cep);
|
||||
siw_cep_put(cep);
|
||||
siw_cep_set_free_and_put(cep);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1897,8 +1896,7 @@ int siw_create_listen(struct iw_cm_id *id, int backlog)
|
||||
siw_socket_disassoc(s);
|
||||
cep->state = SIW_EPSTATE_CLOSED;
|
||||
|
||||
siw_cep_set_free(cep);
|
||||
siw_cep_put(cep);
|
||||
siw_cep_set_free_and_put(cep);
|
||||
}
|
||||
sock_release(s);
|
||||
|
||||
@@ -1932,8 +1930,7 @@ static void siw_drop_listeners(struct iw_cm_id *id)
|
||||
cep->sock = NULL;
|
||||
}
|
||||
cep->state = SIW_EPSTATE_CLOSED;
|
||||
siw_cep_set_free(cep);
|
||||
siw_cep_put(cep);
|
||||
siw_cep_set_free_and_put(cep);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user