From: Leon Romanovsky <leonro@xxxxxxxxxx> The mlx5 rereg_mr implementation is convoluted. Such code causes to hard to spot bugs and even harder task - code review. This series from Jason cleans that flow. Thanks Jason Gunthorpe (5): RDMA/uverbs: Tidy input validation of ib_uverbs_rereg_mr() RDMA/uverbs: Check ODP in ib_check_mr_access() as well RDMA/uverbs: Allow drivers to create a new HW object during rereg_mr RDMA/mlx5: Reorganize mlx5_ib_reg_user_mr() RDMA/mlx5: Fix error unwinds for rereg_mr drivers/infiniband/core/rdma_core.c | 51 ++ drivers/infiniband/core/uverbs_cmd.c | 114 ++-- drivers/infiniband/core/uverbs_std_types_mr.c | 2 +- drivers/infiniband/hw/hns/hns_roce_device.h | 7 +- drivers/infiniband/hw/hns/hns_roce_mr.c | 15 +- drivers/infiniband/hw/mlx4/mlx4_ib.h | 8 +- drivers/infiniband/hw/mlx4/mr.c | 16 +- drivers/infiniband/hw/mlx5/devx.c | 2 +- drivers/infiniband/hw/mlx5/mlx5_ib.h | 10 +- drivers/infiniband/hw/mlx5/mr.c | 532 ++++++++++-------- drivers/infiniband/hw/mlx5/odp.c | 16 +- include/rdma/ib_verbs.h | 13 +- include/rdma/uverbs_types.h | 5 + 13 files changed, 482 insertions(+), 309 deletions(-) -- 2.28.0