RDMA/mlx5: Fix xlt_chunk_align calculation
authorNiklas Schnelle <schnelle@linux.ibm.com>
Wed, 8 Sep 2021 08:18:49 +0000 (10:18 +0200)
committerJason Gunthorpe <jgg@nvidia.com>
Wed, 8 Sep 2021 11:31:10 +0000 (08:31 -0300)
The XLT chunk alignment depends on ent_size not sizeof(ent_size) aka
sizeof(size_t). The incoming ent_size is either 8 or 16, so the
miscalculation when 16 is required is only an over-alignment and
functional harmless.

Fixes: 8010d74b9965 ("RDMA/mlx5: Split the WR setup out of mlx5_ib_update_xlt()")
Link: https://lore.kernel.org/r/20210908081849.7948-2-schnelle@linux.ibm.com
Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/mlx5/mr.c

index b2dd117..3be36eb 100644 (file)
@@ -995,7 +995,7 @@ static struct mlx5_ib_mr *alloc_cacheable_mr(struct ib_pd *pd,
 static void *mlx5_ib_alloc_xlt(size_t *nents, size_t ent_size, gfp_t gfp_mask)
 {
        const size_t xlt_chunk_align =
-               MLX5_UMR_MTT_ALIGNMENT / sizeof(ent_size);
+               MLX5_UMR_MTT_ALIGNMENT / ent_size;
        size_t size;
        void *res = NULL;