Re: [PATCH v2 1/3] iommu/uapi: Define uapi version and capabilities
From: Jacob Pan
Date: Tue Apr 14 2020 - 12:00:48 EST
On Tue, 14 Apr 2020 01:11:07 -0700
Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
> On Mon, Apr 13, 2020 at 01:41:57PM -0700, Jacob Pan wrote:
> > Hi All,
> >
> > Just a gentle reminder, any feedback on the options I listed below?
> > New ideas will be even better.
> >
> > Christoph, does the explanation make sense to you? We do have the
> > capability/flag based scheme for IOMMU API extension, the version is
> > mainly used for size lookup. Compatibility checking is another use
> > of the version, it makes checking easy when a vIOMMU is launched.
>
> No. If you truely need different versions use different ioctl
> identifiers.
OK. I will drop the global version and keep the current per API/IOCTL
struct.
> If it really is just the size pass the size and not a
> version.
OK, I think we have a path forward. I will remove the size-version
lookup.
My concern was that since we cannot trust the size provided by
userspace. We must sanity check the argsz based on knowledge of the
struct within the kernel. AFAIK, VFIO does this check by looking at
offsetofend(user_struct, last_element). But in this case, VFIO is not
the end consumer, and last_element can be a variable size union.
So we'd better let IOMMU driver deal with it.