staging/rdma/hfi1: pre-compute sc and sde for RC/UC QPs
Hello Mike Marciniszyn,
The patch d7b8ba5121e8: "staging/rdma/hfi1: pre-compute sc and sde for RC/UC QPs" from Nov 9, 2015, leads to the following static checker warning:
drivers/staging/rdma/hfi1/verbs.c:1657 ah_to_sc() error: buffer overflow 'ibp->sl_to_sc' 32 <= 255
drivers/staging/rdma/hfi1/qp.c
817 if (attr_mask & IB_QP_PATH_MIG_STATE) {
818 qp->s_mig_state = attr->path_mig_state;
819 if (mig) {
820 qp->remote_ah_attr = qp->alt_ah_attr; 821 qp->port_num = qp->alt_ah_attr.port_num; 822 qp->s_pkey_index = qp->s_alt_pkey_index; 823 qp->s_flags |= HFI1_S_AHG_CLEAR; 824 qp->s_sc = ah_to_sc(ibqp->device, &qp->remote_ah_attr);
Do we need to verify (hfi1_check_ah(ibqp->device, &qp->remote_ah_attr)) before calling ah_to_sc()?
825 qp->s_sde = qp_to_sdma_engine(qp, qp->s_sc); 826 } 827 }
regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 15 lines
The patch
d7b8ba5121e8: "staging/rdma/hfi1: pre-compute sc and sde for RC/UC QPs" from Nov 9, 2015, leads to the following static checker warning:drivers/staging/rdma/hfi1/verbs.c:1657 ah_to_sc() error: buffer overflow 'ibp->sl_to_sc' 32 <= 255
drivers/staging/rdma/hfi1/qp.c817 if (attr_mask & IB_QP_PATH_MIG_STATE) { 818 qp->s_mig_state = attr->path_mig_state; 819 if (mig) { 820 qp->remote_ah_attr = qp->alt_ah_attr; 821 qp->port_num = qp->alt_ah_attr.port_num; 822 qp->s_pkey_index = qp->s_alt_pkey_index; 823 qp->s_flags |= HFI1_S_AHG_CLEAR; 824 qp->s_sc = ah_to_sc(ibqp->device, &qp-
Quoted 5 lines
Quoted 1 line
remote_ah_attr);Do we need to verify (
hfi1_check_ah(ibqp->device, &qp->remote_ah_attr)) before callingah_to_sc()?
Looking at this now.
What was the static checker? Is it available for us to add to our testing?
Mike
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 9 lines
drivers/staging/rdma/hfi1/qp.c817 if (attr_mask & IB_QP_PATH_MIG_STATE) { 818 qp->s_mig_state = attr->path_mig_state; 819 if (mig) { 820 qp->remote_ah_attr = qp->alt_ah_attr; 821 qp->port_num = qp->alt_ah_attr.port_num; 822 qp->s_pkey_index = qp->s_alt_pkey_index; 823 qp->s_flags |= HFI1_S_AHG_CLEAR; 824 qp->s_sc = ah_to_sc(ibqp->device, &qp-
Quoted 5 lines
Quoted 1 line
remote_ah_attr);Do we need to verify (
hfi1_check_ah(ibqp->device, &qp->remote_ah_attr)) before callingah_to_sc()?
The modify code validates the IB_QP_ALT_PATH above:
647 if (attr_mask & IB_QP_ALT_PATH) {
648 u8 sc;
649
650 if (attr->alt_ah_attr.dlid >= HFI1_MULTICAST_LID_BASE)
651 goto inval;
652 if (hfi1_check_ah(qp->ibqp.device, &attr->alt_ah_attr))
653 goto inval;
654 if (attr->alt_pkey_index >= hfi1_get_npkeys(dd))
655 goto inval;
656 sc = ah_to_sc(ibqp->device, &attr->alt_ah_attr);
657 if (!qp_to_sdma_engine(qp, sc) &&
658 dd->flags & HFI1_HAS_SEND_DMA)
659 goto inval;
660 }
Mike
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 15 lines
Quoted 9 lines
drivers/staging/rdma/hfi1/qp.c817 if (attr_mask & IB_QP_PATH_MIG_STATE) { 818 qp->s_mig_state = attr->path_mig_state; 819 if (mig) { 820 qp->remote_ah_attr = qp->alt_ah_attr; 821 qp->port_num = qp->alt_ah_attr.port_num; 822 qp->s_pkey_index = qp->s_alt_pkey_index; 823 qp->s_flags |= HFI1_S_AHG_CLEAR; 824 qp->s_sc = ah_to_sc(ibqp->device, &qp-Quoted 5 lines
Quoted 1 line
remote_ah_attr);Do we need to verify (hfi1_check_ah(ibqp->device,
&qp->remote_ah_attr)) before callingah_to_sc()?
Quoted 16 lines
The modify code validates the
IB_QP_ALT_PATHabove:
647 if (attr_mask&IB_QP_ALT_PATH) {
648 u8 sc;
649
650 if (attr->alt_ah_attr.dlid>=HFI1_MULTICAST_LID_BASE)
651 goto inval;
652 if (hfi1_check_ah(qp->ibqp.device, &attr->alt_ah_attr))
653 goto inval;
654 if (attr->alt_pkey_index>=hfi1_get_npkeys(dd))
655 goto inval;
656 sc =ah_to_sc(ibqp->device, &attr->alt_ah_attr);
657 if (!qp_to_sdma_engine(qp, sc) &&
658dd->flags&HFI1_HAS_SEND_DMA)
659 goto inval;
660 }
I should point out the the IB core insures these two attributes are present in the same modify.
Mike
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html