lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJHc60xMgz=JuqTesqC9h0axFMQnLX-eYbGBi=DG2_gDbdTnoQ@mail.gmail.com>
Date: Thu, 8 Jan 2026 13:45:58 -0800
From: Raghavendra Rao Ananta <rananta@...gle.com>
To: David Matlack <dmatlack@...gle.com>
Cc: Alex Williamson <alex@...zbot.org>, Alex Williamson <alex.williamson@...hat.com>, 
	Josh Hilke <jrhilke@...gle.com>, kvm@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 5/6] vfio: selftests: Add helper to set/override a vf_token

On Wed, Jan 7, 2026 at 2:56 PM David Matlack <dmatlack@...gle.com> wrote:
>
> On 2025-12-10 06:14 PM, Raghavendra Rao Ananta wrote:
> > Add a helper function, vfio_device_set_vf_token(), to set or override a
> > vf_token. Not only at init, but a vf_token can also be set via the
> > VFIO_DEVICE_FEATURE ioctl, by setting the
> > VFIO_DEVICE_FEATURE_PCI_VF_TOKEN flag. Hence, add an API to utilize this
> > functionality from the test code. The subsequent commit will use this to
> > test the functionality of this method to set the vf_token.
> >
> > Signed-off-by: Raghavendra Rao Ananta <rananta@...gle.com>
> > ---
> >  .../lib/include/libvfio/vfio_pci_device.h     |  2 ++
> >  .../selftests/vfio/lib/vfio_pci_device.c      | 34 +++++++++++++++++++
> >  2 files changed, 36 insertions(+)
> >
> > diff --git a/tools/testing/selftests/vfio/lib/include/libvfio/vfio_pci_device.h b/tools/testing/selftests/vfio/lib/include/libvfio/vfio_pci_device.h
> > index 6186ca463ca6e..b370aa6a74d0b 100644
> > --- a/tools/testing/selftests/vfio/lib/include/libvfio/vfio_pci_device.h
> > +++ b/tools/testing/selftests/vfio/lib/include/libvfio/vfio_pci_device.h
> > @@ -129,4 +129,6 @@ void vfio_container_set_iommu(struct vfio_pci_device *device);
> >  void vfio_pci_iommufd_cdev_open(struct vfio_pci_device *device, const char *bdf);
> >  int __vfio_device_bind_iommufd(int device_fd, int iommufd, const char *vf_token);
> >
> > +void vfio_device_set_vf_token(int fd, const char *vf_token);
> > +
> >  #endif /* SELFTESTS_VFIO_LIB_INCLUDE_LIBVFIO_VFIO_PCI_DEVICE_H */
> > diff --git a/tools/testing/selftests/vfio/lib/vfio_pci_device.c b/tools/testing/selftests/vfio/lib/vfio_pci_device.c
> > index 208da2704d9e2..7725ecc62b024 100644
> > --- a/tools/testing/selftests/vfio/lib/vfio_pci_device.c
> > +++ b/tools/testing/selftests/vfio/lib/vfio_pci_device.c
> > @@ -109,6 +109,40 @@ static void vfio_pci_irq_get(struct vfio_pci_device *device, u32 index,
> >       ioctl_assert(device->fd, VFIO_DEVICE_GET_IRQ_INFO, irq_info);
> >  }
> >
> > +static int vfio_device_feature_ioctl(int fd, u32 flags, void *data,
> > +                                  size_t data_size)
> > +{
> > +     u8 buffer[sizeof(struct vfio_device_feature) + data_size] = {};
> > +     struct vfio_device_feature *feature = (void *)buffer;
> > +
> > +     memcpy(feature->data, data, data_size);
> > +
> > +     feature->argsz = sizeof(buffer);
> > +     feature->flags = flags;
> > +
> > +     return ioctl(fd, VFIO_DEVICE_FEATURE, feature);
> > +}
> > +
> > +static void vfio_device_feature_set(int fd, u16 feature, void *data, size_t data_size)
> > +{
> > +     u32 flags = VFIO_DEVICE_FEATURE_SET | feature;
> > +     int ret;
> > +
> > +     ret = vfio_device_feature_ioctl(fd, flags, data, data_size);
> > +     VFIO_ASSERT_EQ(ret, 0, "Failed to set feature %u\n", feature);
> > +}
> > +
> > +void vfio_device_set_vf_token(int fd, const char *vf_token)
> > +{
> > +     uuid_t token_uuid = {0};
> > +
> > +     VFIO_ASSERT_NOT_NULL(vf_token, "vf_token is NULL");
> > +     VFIO_ASSERT_EQ(uuid_parse(vf_token, token_uuid), 0);
> > +
> > +     vfio_device_feature_set(fd, VFIO_DEVICE_FEATURE_PCI_VF_TOKEN,
> > +                             token_uuid, sizeof(uuid_t));
> > +}
>
> Would it be useful to have a variant that returns an int for negative
> testing?
>
I couldn't see any interesting cases where the ioctl could fail that
would warrant a negative test.
The 'incorrect vf token set' is validated later during device init.
I've implemented a negative test for this.

However, please let me know if you can think of anything.

Thank you.
Raghavendra

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ