mirror of https://gitee.com/openkylin/linux.git
RDMA 5.10 fifth rc pull request
Two user triggerable crashers and a some EFA related regressions: - Syzkaller found bug in CM - Restore access to the GID table and fix modify_qp for EFA - Crasher in qedr -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEfB7FMLh+8QxL+6i3OG33FX4gmxoFAl/SIhwACgkQOG33FX4g mxpGJA//avv3jik7oQYssmuCy1QwIT/aRVcigvYdhgO7f1JbIs7DkVwQRz1rYYSv SgtoFESutwgutQacuEg6DPn2xvan04gdGxK5dxPCU8RXm19yKmHi68U2yevMfVdI VFjgMM2+JA+i91l8rfgXcz+Ygs4gUTeppM7Znv/1RAdY+d0BNeNEsZgA5Dm95y3F p3Fa0wTHO1UKVNnpTi4TypFELfAsP2O8oascLkV7GwN86V/asenefsfdUlrXSxK4 687y3/AnBC8/pJp9RRLFbEkS6+wKZIRg1DyHMptkf6gFcVvx9AzeQqmqGnAz/9GG 9LusGUxdI4EQeADxpRQ56STs4U+5NtPWZdmSwOZFBZConaO2TQtjYWleBZUl3WQw rKUwOYcyZU6AwF4V72x1RnEFzzIkF7EHTJLKKDCUxnW6UGz3jo+tCwR593pTnlon ue+6ibktk1ZcFU4rhf80Y1OUHytmFLM3j2ynXZ/SE1uUahECHDDMmC5XUOvkR5Fn ytL9wbFoPqs7zZ8vB1lvo/MYJy9P/qOMmHGLbca8YczWaZ5yzlZF1RibalmzblES UJeKNe6MC0+vNaDWeSY474kP1r7XXMUGPrXVX1GOsqdDVrw2Li0FksgcBFAd0oIi BizkmKth+p10XmsjxqmHCWOjDLylB4fmgSzKjmjXLejyn3BVJgY= =CJih -----END PGP SIGNATURE----- Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma Pull rdma fixes from Jason Gunthorpe: "Two user triggerable crashers and a some EFA related regressions: - Syzkaller found a bug in CM - Restore access to the GID table and fix modify_qp for EFA - Crasher in qedr" * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: RDMA/cm: Fix an attempt to use non-valid pointer when cleaning timewait RDMA/core: Fix empty gid table for non IB/RoCE devices RDMA/efa: Use the correct current and new states in modify QP RDMA/qedr: iWARP invalid(zero) doorbell address fix
This commit is contained in:
commit
9fca90cf28
|
@ -1269,9 +1269,6 @@ ssize_t rdma_query_gid_table(struct ib_device *device,
|
|||
unsigned long flags;
|
||||
|
||||
rdma_for_each_port(device, port_num) {
|
||||
if (!rdma_ib_or_roce(device, port_num))
|
||||
continue;
|
||||
|
||||
table = rdma_gid_table(device, port_num);
|
||||
read_lock_irqsave(&table->rwlock, flags);
|
||||
for (i = 0; i < table->sz; i++) {
|
||||
|
|
|
@ -1522,6 +1522,7 @@ int ib_send_cm_req(struct ib_cm_id *cm_id,
|
|||
id.local_id);
|
||||
if (IS_ERR(cm_id_priv->timewait_info)) {
|
||||
ret = PTR_ERR(cm_id_priv->timewait_info);
|
||||
cm_id_priv->timewait_info = NULL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -2114,6 +2115,7 @@ static int cm_req_handler(struct cm_work *work)
|
|||
id.local_id);
|
||||
if (IS_ERR(cm_id_priv->timewait_info)) {
|
||||
ret = PTR_ERR(cm_id_priv->timewait_info);
|
||||
cm_id_priv->timewait_info = NULL;
|
||||
goto destroy;
|
||||
}
|
||||
cm_id_priv->timewait_info->work.remote_id = cm_id_priv->id.remote_id;
|
||||
|
|
|
@ -940,8 +940,8 @@ int efa_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr,
|
|||
1);
|
||||
EFA_SET(¶ms.modify_mask,
|
||||
EFA_ADMIN_MODIFY_QP_CMD_CUR_QP_STATE, 1);
|
||||
params.cur_qp_state = qp_attr->cur_qp_state;
|
||||
params.qp_state = qp_attr->qp_state;
|
||||
params.cur_qp_state = cur_state;
|
||||
params.qp_state = new_state;
|
||||
}
|
||||
|
||||
if (qp_attr_mask & IB_QP_EN_SQD_ASYNC_NOTIFY) {
|
||||
|
|
|
@ -1936,6 +1936,15 @@ static int qedr_create_user_qp(struct qedr_dev *dev,
|
|||
}
|
||||
|
||||
if (rdma_protocol_iwarp(&dev->ibdev, 1)) {
|
||||
qp->urq.db_rec_db2_addr = ctx->dpi_addr + uresp.rq_db2_offset;
|
||||
|
||||
/* calculate the db_rec_db2 data since it is constant so no
|
||||
* need to reflect from user
|
||||
*/
|
||||
qp->urq.db_rec_db2_data.data.icid = cpu_to_le16(qp->icid);
|
||||
qp->urq.db_rec_db2_data.data.value =
|
||||
cpu_to_le16(DQ_TCM_IWARP_POST_RQ_CF_CMD);
|
||||
|
||||
rc = qedr_db_recovery_add(dev, qp->urq.db_rec_db2_addr,
|
||||
&qp->urq.db_rec_db2_data,
|
||||
DB_REC_WIDTH_32B,
|
||||
|
|
Loading…
Reference in New Issue