Re: [PATCH] RDMA/core: Use fdget() and fdput()

From: Jason Gunthorpe
Date: Fri May 05 2023 - 07:56:22 EST


On Fri, May 05, 2023 at 11:33:57AM +0800, ye.xingchen@xxxxxxxxxx wrote:
> From: Ye Xingchen <ye.xingchen@xxxxxxxxxx>
>
> convert the fget()/fput() uses to fdget()/fdput().
>
> Signed-off-by: Ye Xingchen <ye.xingchen@xxxxxxxxxx>
> ---
> drivers/infiniband/core/rdma_core.c | 11 +++++------
> 1 file changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/infiniband/core/rdma_core.c b/drivers/infiniband/core/rdma_core.c
> index 29b1ab1d5f93..c35df0b27e86 100644
> --- a/drivers/infiniband/core/rdma_core.c
> +++ b/drivers/infiniband/core/rdma_core.c
> @@ -335,7 +335,7 @@ lookup_get_fd_uobject(const struct uverbs_api_object *obj,
> enum rdma_lookup_mode mode)
> {
> const struct uverbs_obj_fd_type *fd_type;
> - struct file *f;
> + struct fd f = fdget(fdno);
> struct ib_uobject *uobject;
> int fdno = id;
>
> @@ -350,18 +350,17 @@ lookup_get_fd_uobject(const struct uverbs_api_object *obj,
> fd_type =
> container_of(obj->type_attrs, struct uverbs_obj_fd_type, type);
>
> - f = fget(fdno);
> - if (!f)
> + if (!f.file)
> return ERR_PTR(-EBADF);

This also has incorrect pairing with fdput

Jason