mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-12 21:46:05 +07:00
RDMA/bnxt_re: Fix a bunch of off by one bugs in qplib_fp.c
The srq->swq[] is allocated in bnxt_qplib_create_srq(). It has
srq->hwq.max_elements elements so these tests should be > instead of >=
or we might go beyond the end of the array.
Fixes: 1ac5a40479
("RDMA/bnxt_re: Add bnxt_re RoCE driver")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Selvin Xavier <selvin.xavier@broadcom.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
474e5a8606
commit
c1dfc0114c
@ -2354,7 +2354,7 @@ static int bnxt_qplib_cq_process_res_rc(struct bnxt_qplib_cq *cq,
|
||||
srq = qp->srq;
|
||||
if (!srq)
|
||||
return -EINVAL;
|
||||
if (wr_id_idx > srq->hwq.max_elements) {
|
||||
if (wr_id_idx >= srq->hwq.max_elements) {
|
||||
dev_err(&cq->hwq.pdev->dev,
|
||||
"QPLIB: FP: CQ Process RC ");
|
||||
dev_err(&cq->hwq.pdev->dev,
|
||||
@ -2369,7 +2369,7 @@ static int bnxt_qplib_cq_process_res_rc(struct bnxt_qplib_cq *cq,
|
||||
*pcqe = cqe;
|
||||
} else {
|
||||
rq = &qp->rq;
|
||||
if (wr_id_idx > rq->hwq.max_elements) {
|
||||
if (wr_id_idx >= rq->hwq.max_elements) {
|
||||
dev_err(&cq->hwq.pdev->dev,
|
||||
"QPLIB: FP: CQ Process RC ");
|
||||
dev_err(&cq->hwq.pdev->dev,
|
||||
@ -2437,7 +2437,7 @@ static int bnxt_qplib_cq_process_res_ud(struct bnxt_qplib_cq *cq,
|
||||
if (!srq)
|
||||
return -EINVAL;
|
||||
|
||||
if (wr_id_idx > srq->hwq.max_elements) {
|
||||
if (wr_id_idx >= srq->hwq.max_elements) {
|
||||
dev_err(&cq->hwq.pdev->dev,
|
||||
"QPLIB: FP: CQ Process UD ");
|
||||
dev_err(&cq->hwq.pdev->dev,
|
||||
@ -2452,7 +2452,7 @@ static int bnxt_qplib_cq_process_res_ud(struct bnxt_qplib_cq *cq,
|
||||
*pcqe = cqe;
|
||||
} else {
|
||||
rq = &qp->rq;
|
||||
if (wr_id_idx > rq->hwq.max_elements) {
|
||||
if (wr_id_idx >= rq->hwq.max_elements) {
|
||||
dev_err(&cq->hwq.pdev->dev,
|
||||
"QPLIB: FP: CQ Process UD ");
|
||||
dev_err(&cq->hwq.pdev->dev,
|
||||
@ -2546,7 +2546,7 @@ static int bnxt_qplib_cq_process_res_raweth_qp1(struct bnxt_qplib_cq *cq,
|
||||
"QPLIB: FP: SRQ used but not defined??");
|
||||
return -EINVAL;
|
||||
}
|
||||
if (wr_id_idx > srq->hwq.max_elements) {
|
||||
if (wr_id_idx >= srq->hwq.max_elements) {
|
||||
dev_err(&cq->hwq.pdev->dev,
|
||||
"QPLIB: FP: CQ Process Raw/QP1 ");
|
||||
dev_err(&cq->hwq.pdev->dev,
|
||||
@ -2561,7 +2561,7 @@ static int bnxt_qplib_cq_process_res_raweth_qp1(struct bnxt_qplib_cq *cq,
|
||||
*pcqe = cqe;
|
||||
} else {
|
||||
rq = &qp->rq;
|
||||
if (wr_id_idx > rq->hwq.max_elements) {
|
||||
if (wr_id_idx >= rq->hwq.max_elements) {
|
||||
dev_err(&cq->hwq.pdev->dev,
|
||||
"QPLIB: FP: CQ Process Raw/QP1 RQ wr_id ");
|
||||
dev_err(&cq->hwq.pdev->dev,
|
||||
|
Loading…
Reference in New Issue
Block a user