[PATCH v2 2/3] iommufd/viommu: Publish a vDEVICE only after vdevice_init() succeeds
Jason Gunthorpe
jgg at nvidia.com
Mon Jul 6 10:23:56 PDT 2026
On Sun, Jul 05, 2026 at 10:36:10PM -0700, Nicolin Chen wrote:
> @@ -218,18 +218,28 @@ int iommufd_vdevice_alloc_ioctl(struct iommufd_ucmd *ucmd)
> */
> idev->vdev = vdev;
>
> - curr = xa_cmpxchg(&viommu->vdevs, virt_id, NULL, vdev, GFP_KERNEL);
> - if (curr) {
> - rc = xa_err(curr) ?: -EEXIST;
> + /*
> + * Reserve the slot with a zero entry (reads back as NULL) until the
> + * vdevice_init() op accepts the vDEVICE. Only the xa_* helpers hide a
> + * reserved entry, so never use a raw xas_* iterator on this xarray.
> + */
> + rc = xa_insert(&viommu->vdevs, virt_id, NULL, GFP_KERNEL);
> + if (rc) {
Why xa_insert() not xa_reserve() ?
Jason
More information about the linux-arm-kernel
mailing list