summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/infiniband/hw/irdma/verbs.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c
index 1dd4a48c268d..81593bb1917e 100644
--- a/drivers/infiniband/hw/irdma/verbs.c
+++ b/drivers/infiniband/hw/irdma/verbs.c
@@ -1138,8 +1138,12 @@ static int irdma_create_qp(struct ib_qp *ibqp,
init_completion(&iwqp->free_qp);
if (udata) {
- /* GEN_1 legacy support with libi40iw does not have expanded uresp struct */
- if (udata->outlen < sizeof(uresp)) {
+ /* GEN_1 legacy support with libi40iw does not have expanded
+ * uresp struct. Check for the exact legacy size (20 bytes) to
+ * ensure that newer expanded uresp structs don't accidentally
+ * trigger the legacy fallback.
+ */
+ if (udata->outlen == IRDMA_CREATE_QP_MIN_RESP_LEN) {
uresp.lsmm = 1;
uresp.push_idx = IRDMA_INVALID_PUSH_PAGE_INDEX_GEN_1;
} else {