RDMA/ocrdma: Avoid reporting wrong completions in case of error CQEs
During cable pull test with a mount over NFS/RDMA, the driver was reporting error completions when there were no pending requests in the SQ and RQ. This was triggering a host crash because of reporting wrong work req id. Avoid this crash by adding a check for SQ and RQ empty condition and prevent reporting completions if queues are empty. Signed-off-by: Selvin Xavier <selvin.xavier@emulex.com> Signed-off-by: Devesh Sharma <devesh.sharma@emulex.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
daac96815e
commit
a96ffb1de9
|
@ -2489,6 +2489,11 @@ static bool ocrdma_poll_err_scqe(struct ocrdma_qp *qp,
|
||||||
*stop = true;
|
*stop = true;
|
||||||
expand = false;
|
expand = false;
|
||||||
}
|
}
|
||||||
|
} else if (is_hw_sq_empty(qp)) {
|
||||||
|
/* Do nothing */
|
||||||
|
expand = false;
|
||||||
|
*polled = false;
|
||||||
|
*stop = false;
|
||||||
} else {
|
} else {
|
||||||
*polled = true;
|
*polled = true;
|
||||||
expand = ocrdma_update_err_scqe(ibwc, cqe, qp, status);
|
expand = ocrdma_update_err_scqe(ibwc, cqe, qp, status);
|
||||||
|
@ -2594,6 +2599,11 @@ static bool ocrdma_poll_err_rcqe(struct ocrdma_qp *qp, struct ocrdma_cqe *cqe,
|
||||||
*stop = true;
|
*stop = true;
|
||||||
expand = false;
|
expand = false;
|
||||||
}
|
}
|
||||||
|
} else if (is_hw_rq_empty(qp)) {
|
||||||
|
/* Do nothing */
|
||||||
|
expand = false;
|
||||||
|
*polled = false;
|
||||||
|
*stop = false;
|
||||||
} else {
|
} else {
|
||||||
*polled = true;
|
*polled = true;
|
||||||
expand = ocrdma_update_err_rcqe(ibwc, cqe, qp, status);
|
expand = ocrdma_update_err_rcqe(ibwc, cqe, qp, status);
|
||||||
|
|
Loading…
Reference in New Issue