Subject: RDMA/rxe: Handle zero length rdma
authorBob Pearson <rpearsonhpe@gmail.com>
Thu, 2 Feb 2023 04:42:41 +0000 (22:42 -0600)
committerJason Gunthorpe <jgg@nvidia.com>
Thu, 16 Feb 2023 15:13:52 +0000 (11:13 -0400)
commit5ff31dfcd6d23f9c1bd5dd1a2c648ba499659357
tree5e4c41fa76662881b88486a336d6c52ef5324f86
parent4ca446b127c568b59cb8d9748b6f70499624bb18
Subject: RDMA/rxe: Handle zero length rdma

Currently the rxe driver does not handle all cases of zero length rdma
operations correctly. The client does not have to provide an rkey for zero
length RDMA read or write operations so the rkey provided may be invalid
and should not be used to lookup an mr.

This patch corrects the driver to ignore the provided rkey if the reth
length is zero for read or write operations and make sure to set the mr to
NULL. In read_reply() if length is zero rxe_recheck_mr() is not
called. Warnings are added in the routines in rxe_mr.c to catch NULL MRs
when the length is non-zero.

Fixes: 8700e3e7c485 ("Soft RoCE driver")
Link: https://lore.kernel.org/r/20230202044240.6304-1-rpearsonhpe@gmail.com
Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com>
Reviewed-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/sw/rxe/rxe_mr.c
drivers/infiniband/sw/rxe/rxe_resp.c