mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
RDMA/irdma: Fix legacy i40iw compat check in create_qp
The irdma driver maintains backward compatibility with the legacy i40iw userspace provider by checking the length of the user response buffer in irdma_create_qp. Previously, the check relied on udata->outlen < sizeof(uresp). That is technically okay since there have only ever been two sizes for the resp struct (legacy and current). However, it would be a problem if the resp struct is ever expanded in the future because it would end up triggering the legacy fallback path for non-legacy irdma providers that just haven't moved over to the newer expanded struct yet. Fix this by explicitly checking for the exact legacy resp size. Signed-off-by: Jacob Moroni <jmoroni@google.com> Link: https://patch.msgid.link/20260713171257.3131493-6-jmoroni@google.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
parent
173fc2b8dc
commit
628f33362e
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user