Re: [PATCH 5.15.x] RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jan 26, 2024 at 02:21:43PM -0600, Shiraz Saleem wrote:
> From: Mike Marciniszyn <mike.marciniszyn@xxxxxxxxx>
> 
> [ Upstream commit 0a5ec366de7e94192669ba08de6ed336607fd282 ]
> 
> The SQ is shared for between kernel and used by storing the kernel page
> pointer and passing that to a kmap_atomic().
> 
> This then requires that the alignment is PAGE_SIZE aligned.
> 
> Fix by adding an iWarp specific alignment check.
> 
> The patch needed to be reworked because the separate routines
> present upstream are not there in older irdma drivers.
> 
> Fixes: e965ef0e7b2c ("RDMA/irdma: Split QP handler into irdma_reg_user_mr_type_qp")
> Link: https://lore.kernel.org/r/20231129202143.1434-3-shiraz.saleem@xxxxxxxxx
> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@xxxxxxxxx>
> Signed-off-by: Shiraz Saleem <shiraz.saleem@xxxxxxxxx>
> Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx>
> ---
>  drivers/infiniband/hw/irdma/verbs.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c
> index 745712e1d7de..e02f541430ad 100644
> --- a/drivers/infiniband/hw/irdma/verbs.c
> +++ b/drivers/infiniband/hw/irdma/verbs.c
> @@ -2783,6 +2783,11 @@ static struct ib_mr *irdma_reg_user_mr(struct ib_pd *pd, u64 start, u64 len,
>  
>  	switch (req.reg_type) {
>  	case IRDMA_MEMREG_TYPE_QP:
> +		/* iWarp: Catch page not starting on OS page boundary */
> +		if (!rdma_protocol_roce(&iwdev->ibdev, 1) &&
> +		    ib_umem_offset(iwmr->region))
> +			return -EINVAL;
> +
>  		total = req.sq_pages + req.rq_pages + shadow_pgcnt;
>  		if (total > iwmr->page_cnt) {
>  			err = -EINVAL;
> -- 
> 1.8.3.1
> 
> 

You obviously did not test this change, as it fails to build, so why ask
for it to be backported?  I've dropped all of these now from both 6.1.y
and 5.15.y, please be more careful in the future.

thanks,

greg k-h




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux