在 2016/10/14 15:34, Dan Carpenter 写道: > to_ib_qp_state() returns IB_QPS_ERR (6) on error, it doesn't return -1. > > Fixes: 9a4435375cd1 ('IB/hns: Add driver files for hns RoCE driver') > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > > diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v1.c b/drivers/infiniband/hw/hns/hns_roce_hw_v1.c > index 58b150e..280abac 100644 > --- a/drivers/infiniband/hw/hns/hns_roce_hw_v1.c > +++ b/drivers/infiniband/hw/hns/hns_roce_hw_v1.c > @@ -2544,7 +2544,7 @@ int hns_roce_v1_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr, > QP_CONTEXT_QPC_BYTES_144_QP_STATE_M, > QP_CONTEXT_QPC_BYTES_144_QP_STATE_S); > tmp_qp_state = (int)to_ib_qp_state((enum hns_roce_qp_state)state); > - if (tmp_qp_state == -1) { > + if (tmp_qp_state == IB_QPS_ERR) { > dev_err(dev, "to_ib_qp_state error\n"); > ret = -EINVAL; > goto out; > > . > Hi, Dan Carpenter After checking your modification, I think that it maybe fix this: static enum ib_qp_state to_ib_qp_state(enum hns_roce_qp_state state) { switch (state) { case HNS_ROCE_QP_STATE_RST: return IB_QPS_RESET; case HNS_ROCE_QP_STATE_INIT: return IB_QPS_INIT; case HNS_ROCE_QP_STATE_RTR: return IB_QPS_RTR; case HNS_ROCE_QP_STATE_RTS: return IB_QPS_RTS; case HNS_ROCE_QP_STATE_SQD: return IB_QPS_SQD; case HNS_ROCE_QP_STATE_ERR: return IB_QPS_ERR; default: return -1; } } because the IB_QPS_ERR is legal state, but the tmp_qp_state should return a illegal state when the the to_ib_qp_state executed the default branch. thanks Lijun Ou -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html