All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: Yi Liu <yi.l.liu@intel.com>
Cc: mjrosato@linux.ibm.com, jasowang@redhat.com,
	xudong.hao@intel.com, zhenzhong.duan@intel.com,
	peterx@redhat.com, terrence.xu@intel.com,
	chao.p.peng@linux.intel.com, linux-s390@vger.kernel.org,
	kvm@vger.kernel.org, lulu@redhat.com, yanting.jiang@intel.com,
	joro@8bytes.org, nicolinc@nvidia.com, kevin.tian@intel.com,
	yan.y.zhao@intel.com, intel-gfx@lists.freedesktop.org,
	eric.auger@redhat.com, intel-gvt-dev@lists.freedesktop.org,
	yi.y.sun@linux.intel.com, clegoate@redhat.com, cohuck@redhat.com,
	shameerali.kolothum.thodi@huawei.com,
	suravee.suthikulpanit@amd.com, robin.murphy@arm.com
Subject: Re: [Intel-gfx] [PATCH v14 20/26] iommufd: Add iommufd_ctx_from_fd()
Date: Fri, 14 Jul 2023 11:20:31 -0300	[thread overview]
Message-ID: <ZLFZr7hOTLktRthU@nvidia.com> (raw)
In-Reply-To: <20230711025928.6438-21-yi.l.liu@intel.com>

On Mon, Jul 10, 2023 at 07:59:22PM -0700, Yi Liu wrote:
> It's common to get a reference to the iommufd context from a given file
> descriptor. So adds an API for it. Existing users of this API are compiled
> only when IOMMUFD is enabled, so no need to have a stub for the IOMMUFD
> disabled case.
> 
> Signed-off-by: Yi Liu <yi.l.liu@intel.com>
> ---
>  drivers/iommu/iommufd/main.c | 23 +++++++++++++++++++++++
>  include/linux/iommufd.h      |  1 +
>  2 files changed, 24 insertions(+)
> 
> diff --git a/drivers/iommu/iommufd/main.c b/drivers/iommu/iommufd/main.c
> index 32ce7befc8dd..e99a338d4fdf 100644
> --- a/drivers/iommu/iommufd/main.c
> +++ b/drivers/iommu/iommufd/main.c
> @@ -377,6 +377,29 @@ struct iommufd_ctx *iommufd_ctx_from_file(struct file *file)
>  }
>  EXPORT_SYMBOL_NS_GPL(iommufd_ctx_from_file, IOMMUFD);
>  
> +/**
> + * iommufd_ctx_from_fd - Acquires a reference to the iommufd context
> + * @fd: File descriptor to obtain the reference from
> + *
> + * Returns a pointer to the iommufd_ctx, otherwise ERR_PTR. On success
> + * the caller is responsible to call iommufd_ctx_put().
> + */
> +struct iommufd_ctx *iommufd_ctx_from_fd(int fd)
> +{
> +	struct iommufd_ctx *iommufd;
> +	struct fd f;
> +
> +	f = fdget(fd);
> +	if (!f.file)
> +		return ERR_PTR(-EBADF);
> +
> +	iommufd = iommufd_ctx_from_file(f.file);
> +
> +	fdput(f);
> +	return iommufd;
> +}
> +EXPORT_SYMBOL_NS_GPL(iommufd_ctx_from_fd, IOMMUFD);

This is a little wonky since iommufd_ctx_from_file() also obtains a
reference

Just needs to be like this:

struct iommufd_ctx *iommufd_ctx_from_fd(int fd)
{
	struct file *file;

	file = fget(fd);
	if (!file)
		return ERR_PTR(-EBADF);

	if (file->f_op != &iommufd_fops) {
		fput(file);
		return ERR_PTR(-EBADFD);
	}
	/* fget is the same as iommufd_ctx_get() */
	return file->private_data;
}
EXPORT_SYMBOL_NS_GPL(iommufd_ctx_from_fd, IOMMUFD);

?

Jason

WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: Yi Liu <yi.l.liu@intel.com>
Cc: alex.williamson@redhat.com, kevin.tian@intel.com,
	joro@8bytes.org, robin.murphy@arm.com, cohuck@redhat.com,
	eric.auger@redhat.com, nicolinc@nvidia.com, kvm@vger.kernel.org,
	mjrosato@linux.ibm.com, chao.p.peng@linux.intel.com,
	yi.y.sun@linux.intel.com, peterx@redhat.com, jasowang@redhat.com,
	shameerali.kolothum.thodi@huawei.com, lulu@redhat.com,
	suravee.suthikulpanit@amd.com,
	intel-gvt-dev@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org, linux-s390@vger.kernel.org,
	xudong.hao@intel.com, yan.y.zhao@intel.com,
	terrence.xu@intel.com, yanting.jiang@intel.com,
	zhenzhong.duan@intel.com, clegoate@redhat.com
Subject: Re: [PATCH v14 20/26] iommufd: Add iommufd_ctx_from_fd()
Date: Fri, 14 Jul 2023 11:20:31 -0300	[thread overview]
Message-ID: <ZLFZr7hOTLktRthU@nvidia.com> (raw)
In-Reply-To: <20230711025928.6438-21-yi.l.liu@intel.com>

On Mon, Jul 10, 2023 at 07:59:22PM -0700, Yi Liu wrote:
> It's common to get a reference to the iommufd context from a given file
> descriptor. So adds an API for it. Existing users of this API are compiled
> only when IOMMUFD is enabled, so no need to have a stub for the IOMMUFD
> disabled case.
> 
> Signed-off-by: Yi Liu <yi.l.liu@intel.com>
> ---
>  drivers/iommu/iommufd/main.c | 23 +++++++++++++++++++++++
>  include/linux/iommufd.h      |  1 +
>  2 files changed, 24 insertions(+)
> 
> diff --git a/drivers/iommu/iommufd/main.c b/drivers/iommu/iommufd/main.c
> index 32ce7befc8dd..e99a338d4fdf 100644
> --- a/drivers/iommu/iommufd/main.c
> +++ b/drivers/iommu/iommufd/main.c
> @@ -377,6 +377,29 @@ struct iommufd_ctx *iommufd_ctx_from_file(struct file *file)
>  }
>  EXPORT_SYMBOL_NS_GPL(iommufd_ctx_from_file, IOMMUFD);
>  
> +/**
> + * iommufd_ctx_from_fd - Acquires a reference to the iommufd context
> + * @fd: File descriptor to obtain the reference from
> + *
> + * Returns a pointer to the iommufd_ctx, otherwise ERR_PTR. On success
> + * the caller is responsible to call iommufd_ctx_put().
> + */
> +struct iommufd_ctx *iommufd_ctx_from_fd(int fd)
> +{
> +	struct iommufd_ctx *iommufd;
> +	struct fd f;
> +
> +	f = fdget(fd);
> +	if (!f.file)
> +		return ERR_PTR(-EBADF);
> +
> +	iommufd = iommufd_ctx_from_file(f.file);
> +
> +	fdput(f);
> +	return iommufd;
> +}
> +EXPORT_SYMBOL_NS_GPL(iommufd_ctx_from_fd, IOMMUFD);

This is a little wonky since iommufd_ctx_from_file() also obtains a
reference

Just needs to be like this:

struct iommufd_ctx *iommufd_ctx_from_fd(int fd)
{
	struct file *file;

	file = fget(fd);
	if (!file)
		return ERR_PTR(-EBADF);

	if (file->f_op != &iommufd_fops) {
		fput(file);
		return ERR_PTR(-EBADFD);
	}
	/* fget is the same as iommufd_ctx_get() */
	return file->private_data;
}
EXPORT_SYMBOL_NS_GPL(iommufd_ctx_from_fd, IOMMUFD);

?

Jason

  reply	other threads:[~2023-07-14 14:20 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-11  2:59 [Intel-gfx] [PATCH v14 00/26] Add vfio_device cdev for iommufd support Yi Liu
2023-07-11  2:59 ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 01/26] vfio: Allocate per device file structure Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 02/26] vfio: Refine vfio file kAPIs for KVM Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 03/26] vfio: Accept vfio device file in the KVM facing kAPI Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 04/26] kvm/vfio: Prepare for accepting vfio device fd Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 05/26] kvm/vfio: Accept vfio device file from userspace Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 06/26] vfio: Pass struct vfio_device_file * to vfio_device_open/close() Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 07/26] vfio: Block device access via device fd until device is opened Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 08/26] vfio: Add cdev_device_open_cnt to vfio_group Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 09/26] vfio: Make vfio_df_open() single open for device cdev path Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 10/26] vfio-iommufd: Move noiommu compat validation out of vfio_iommufd_bind() Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 11/26] vfio-iommufd: Split bind/attach into two steps Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 12/26] vfio: Record devid in vfio_device_file Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 13/26] vfio-iommufd: Add detach_ioas support for physical VFIO devices Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 14/26] iommufd/device: Add iommufd_access_detach() API Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-14 13:54   ` [Intel-gfx] " Jason Gunthorpe
2023-07-14 13:54     ` Jason Gunthorpe
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 15/26] vfio-iommufd: Add detach_ioas support for emulated VFIO devices Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 16/26] vfio: Move vfio_device_group_unregister() to be the first operation in unregister Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 17/26] vfio: Move device_del() before waiting for the last vfio_device registration refcount Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-14 13:56   ` [Intel-gfx] " Jason Gunthorpe
2023-07-14 13:56     ` Jason Gunthorpe
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 18/26] vfio: Add cdev for vfio_device Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 19/26] vfio: Test kvm pointer in _vfio_device_get_kvm_safe() Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-14 14:11   ` [Intel-gfx] " Jason Gunthorpe
2023-07-14 14:11     ` Jason Gunthorpe
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 20/26] iommufd: Add iommufd_ctx_from_fd() Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-14 14:20   ` Jason Gunthorpe [this message]
2023-07-14 14:20     ` Jason Gunthorpe
2023-07-15  4:10     ` [Intel-gfx] " Liu, Yi L
2023-07-15  4:10       ` Liu, Yi L
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 21/26] vfio: Avoid repeated user pointer cast in vfio_device_fops_unl_ioctl() Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-14 14:27   ` [Intel-gfx] " Jason Gunthorpe
2023-07-14 14:27     ` Jason Gunthorpe
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 22/26] vfio: Add VFIO_DEVICE_BIND_IOMMUFD Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-14 14:42   ` [Intel-gfx] " Jason Gunthorpe
2023-07-14 14:42     ` Jason Gunthorpe
2023-07-15  4:16     ` [Intel-gfx] " Liu, Yi L
2023-07-15  4:16       ` Liu, Yi L
2023-07-15 13:04       ` [Intel-gfx] " Jason Gunthorpe
2023-07-15 13:04         ` Jason Gunthorpe
2023-07-15 14:19         ` [Intel-gfx] " Liu, Yi L
2023-07-15 14:19           ` Liu, Yi L
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 23/26] vfio: Add VFIO_DEVICE_[AT|DE]TACH_IOMMUFD_PT Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-14 14:50   ` [Intel-gfx] " Jason Gunthorpe
2023-07-14 14:50     ` Jason Gunthorpe
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 24/26] vfio: Move the IOMMU_CAP_CACHE_COHERENCY check in __vfio_register_dev() Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-14 15:14   ` [Intel-gfx] " Jason Gunthorpe
2023-07-14 15:14     ` Jason Gunthorpe
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 25/26] vfio: Compile vfio_group infrastructure optionally Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-11  2:59 ` [Intel-gfx] [PATCH v14 26/26] docs: vfio: Add vfio device cdev description Yi Liu
2023-07-11  2:59   ` Yi Liu
2023-07-14 15:19   ` [Intel-gfx] " Jason Gunthorpe
2023-07-14 15:19     ` Jason Gunthorpe
2023-07-11  3:47 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for Add vfio_device cdev for iommufd support (rev18) Patchwork
2023-07-25  5:37 ` [Intel-gfx] [PATCH v14 00/26] Add vfio_device cdev for iommufd support Jiang, Yanting
2023-07-25  5:37   ` Jiang, Yanting

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=ZLFZr7hOTLktRthU@nvidia.com \
    --to=jgg@nvidia.com \
    --cc=chao.p.peng@linux.intel.com \
    --cc=clegoate@redhat.com \
    --cc=cohuck@redhat.com \
    --cc=eric.auger@redhat.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-gvt-dev@lists.freedesktop.org \
    --cc=jasowang@redhat.com \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=lulu@redhat.com \
    --cc=mjrosato@linux.ibm.com \
    --cc=nicolinc@nvidia.com \
    --cc=peterx@redhat.com \
    --cc=robin.murphy@arm.com \
    --cc=shameerali.kolothum.thodi@huawei.com \
    --cc=suravee.suthikulpanit@amd.com \
    --cc=terrence.xu@intel.com \
    --cc=xudong.hao@intel.com \
    --cc=yan.y.zhao@intel.com \
    --cc=yanting.jiang@intel.com \
    --cc=yi.l.liu@intel.com \
    --cc=yi.y.sun@linux.intel.com \
    --cc=zhenzhong.duan@intel.com \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.