On Thu, Oct 17, 2024 at 03:45:56PM -0300, Jason Gunthorpe wrote:
+struct iommufd_vdevice * +__iommufd_vdevice_alloc(struct iommufd_ctx *ictx, size_t size) +{
- struct iommufd_object *obj;
- if (WARN_ON(size < sizeof(struct iommufd_vdevice)))
return ERR_PTR(-EINVAL);
- obj = iommufd_object_alloc_elm(ictx, size, IOMMUFD_OBJ_VDEVICE);
- if (IS_ERR(obj))
return ERR_CAST(obj);
- return container_of(obj, struct iommufd_vdevice, obj);
+}
Like for the viommu this can all just be folded into the #define
It seems that we have to keep two small functions as followings, unless we want to expose the enum iommufd_object_type.
--------------------------------------------------------------- diff --git a/drivers/iommu/iommufd/driver.c b/drivers/iommu/iommufd/driver.c index 4495f1aaccca..fdd203487bac 100644 --- a/drivers/iommu/iommufd/driver.c +++ b/drivers/iommu/iommufd/driver.c @@ -38,10 +38,19 @@ _iommufd_object_alloc_member(struct iommufd_ctx *ictx, size_t size, EXPORT_SYMBOL_NS_GPL(_iommufd_object_alloc_member, IOMMUFD);
struct iommufd_viommu *_iommufd_viommu_alloc(struct iommufd_ctx *ictx, size_t size) { return container_of(_iommufd_object_alloc_member(ictx, size, IOMMUFD_OBJ_VIOMMU), struct iommufd_viommu, obj); } EXPORT_SYMBOL_NS_GPL(_iommufd_viommu_alloc, IOMMUFD); + +struct iommufd_vdevice *_iommufd_vdevice_alloc(struct iommufd_ctx *ictx, + size_t size) +{ + return container_of(_iommufd_object_alloc_member(ictx, size, + IOMMUFD_OBJ_VDEVICE), + struct iommufd_vdevice, obj); +} +EXPORT_SYMBOL_NS_GPL(_iommufd_vdevice_alloc, IOMMUFD); ---------------------------------------------------------------
Thanks Nicolin