RDMA/rxe: Fix responder length checking for UD request packets
authorHonggang LI <honggangli@163.com>
Thu, 23 May 2024 09:46:17 +0000 (17:46 +0800)
committerLeon Romanovsky <leon@kernel.org>
Sun, 9 Jun 2024 08:51:32 +0000 (11:51 +0300)
commitf67ac0061c7614c1548963d3ef1ee1606efd8636
treebadb2888aa59932108bbdb240083b8929d807f9b
parent03fa18a992d5626fd7bf3557a52e826bf8b326b3
RDMA/rxe: Fix responder length checking for UD request packets

According to the IBA specification:
If a UD request packet is detected with an invalid length, the request
shall be an invalid request and it shall be silently dropped by
the responder. The responder then waits for a new request packet.

commit 689c5421bfe0 ("RDMA/rxe: Fix incorrect responder length checking")
defers responder length check for UD QPs in function `copy_data`.
But it introduces a regression issue for UD QPs.

When the packet size is too large to fit in the receive buffer.
`copy_data` will return error code -EINVAL. Then `send_data_in`
will return RESPST_ERR_MALFORMED_WQE. UD QP will transfer into
ERROR state.

Fixes: 689c5421bfe0 ("RDMA/rxe: Fix incorrect responder length checking")
Signed-off-by: Honggang LI <honggangli@163.com>
Link: https://lore.kernel.org/r/20240523094617.141148-1-honggangli@163.com
Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/sw/rxe/rxe_resp.c