From: Leon Romanovsky <leon@kernel.org> To: Jason Gunthorpe <jgg@nvidia.com> Cc: Maor Gottlieb <maorg@nvidia.com>, Alaa Hleihel <alaa@nvidia.com>, Chuck Lever <chuck.lever@oracle.com>, linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org, Tony Lu <tonylu@linux.alibaba.com> Subject: [PATCH rdma-rc] RDMA/mlx5: Fix dereg mr flow for kernel MRs Date: Tue, 21 Dec 2021 11:46:41 +0200 [thread overview] Message-ID: <f298db4ec5fdf7a2d1d166ca2f66020fd9397e5c.1640079962.git.leonro@nvidia.com> (raw) From: Maor Gottlieb <maorg@nvidia.com> The cited commit moved umem into the union, hence umem could be accessed only for user MRs. Add udata check before access umem in the dereg flow. Fixes: f0ae4afe3d35 ("RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow") Tested-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Maor Gottlieb <maorg@nvidia.com> Signed-off-by: Leon Romanovsky <leonro@nvidia.com> --- drivers/infiniband/hw/mlx5/mlx5_ib.h | 2 +- drivers/infiniband/hw/mlx5/mr.c | 4 ++-- drivers/infiniband/hw/mlx5/odp.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/infiniband/hw/mlx5/mlx5_ib.h b/drivers/infiniband/hw/mlx5/mlx5_ib.h index 4a7a56ed740b..29d439cebd22 100644 --- a/drivers/infiniband/hw/mlx5/mlx5_ib.h +++ b/drivers/infiniband/hw/mlx5/mlx5_ib.h @@ -1296,7 +1296,7 @@ int mlx5_ib_update_mr_pas(struct mlx5_ib_mr *mr, unsigned int flags); struct mlx5_ib_mr *mlx5_ib_alloc_implicit_mr(struct mlx5_ib_pd *pd, int access_flags); void mlx5_ib_free_implicit_mr(struct mlx5_ib_mr *mr); -void mlx5_ib_free_odp_mr(struct mlx5_ib_mr *mr); +void mlx5_ib_free_odp_mr(struct mlx5_ib_mr *mr, struct ib_udata *udata); struct ib_mr *mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start, u64 length, u64 virt_addr, int access_flags, struct ib_pd *pd, struct ib_udata *udata); diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c index 63e2129f1142..dc833071949f 100644 --- a/drivers/infiniband/hw/mlx5/mr.c +++ b/drivers/infiniband/hw/mlx5/mr.c @@ -1977,7 +1977,7 @@ int mlx5_ib_dereg_mr(struct ib_mr *ibmr, struct ib_udata *udata) return rc; } - if (mr->umem) { + if (udata && mr->umem) { bool is_odp = is_odp_mr(mr); if (!is_odp) @@ -1985,7 +1985,7 @@ int mlx5_ib_dereg_mr(struct ib_mr *ibmr, struct ib_udata *udata) &dev->mdev->priv.reg_pages); ib_umem_release(mr->umem); if (is_odp) - mlx5_ib_free_odp_mr(mr); + mlx5_ib_free_odp_mr(mr, udata); } if (mr->cache_ent) { diff --git a/drivers/infiniband/hw/mlx5/odp.c b/drivers/infiniband/hw/mlx5/odp.c index 91eb615b89ee..3928576b6696 100644 --- a/drivers/infiniband/hw/mlx5/odp.c +++ b/drivers/infiniband/hw/mlx5/odp.c @@ -530,7 +530,7 @@ struct mlx5_ib_mr *mlx5_ib_alloc_implicit_mr(struct mlx5_ib_pd *pd, return ERR_PTR(err); } -void mlx5_ib_free_odp_mr(struct mlx5_ib_mr *mr) +void mlx5_ib_free_odp_mr(struct mlx5_ib_mr *mr, struct ib_udata *udata) { struct mlx5_ib_mr *mtt; unsigned long idx; @@ -541,7 +541,7 @@ void mlx5_ib_free_odp_mr(struct mlx5_ib_mr *mr) */ xa_for_each(&mr->implicit_children, idx, mtt) { xa_erase(&mr->implicit_children, idx); - mlx5_ib_dereg_mr(&mtt->ibmr, NULL); + mlx5_ib_dereg_mr(&mtt->ibmr, udata); } } -- 2.33.1
next reply other threads:[~2021-12-21 9:46 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-12-21 9:46 Leon Romanovsky [this message] 2021-12-22 2:51 ` Tony Lu 2022-01-03 9:51 ` Leon Romanovsky 2022-01-03 13:15 ` Thorsten Leemhuis 2022-01-03 18:26 ` Leon Romanovsky 2022-01-04 0:08 ` Jason Gunthorpe 2022-01-04 10:29 ` Thorsten Leemhuis
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=f298db4ec5fdf7a2d1d166ca2f66020fd9397e5c.1640079962.git.leonro@nvidia.com \ --to=leon@kernel.org \ --cc=alaa@nvidia.com \ --cc=chuck.lever@oracle.com \ --cc=jgg@nvidia.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-rdma@vger.kernel.org \ --cc=maorg@nvidia.com \ --cc=tonylu@linux.alibaba.com \ --subject='Re: [PATCH rdma-rc] RDMA/mlx5: Fix dereg mr flow for kernel MRs' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).