On Tue, Oct 29, 2024 at 12:36:24PM -0300, Jason Gunthorpe wrote: > On Tue, Oct 29, 2024 at 11:54:36AM -0300, Jason Gunthorpe wrote: > > On Fri, Oct 25, 2024 at 04:49:44PM -0700, Nicolin Chen wrote: > > > +void iommufd_viommu_destroy(struct iommufd_object *obj) > > > +{ > > > + struct iommufd_viommu *viommu = > > > + container_of(obj, struct iommufd_viommu, obj); > > > + > > > + if (viommu->ops && viommu->ops->free) > > > + viommu->ops->free(viommu); > > > > Ops can't be null and free can't be null, that would mean there is a > > memory leak. > > Actually, it is just named wrong, it should be called destroy like > this op, it doesn't free any memory.. Well, it frees if driver allocated something in its top structure. Yet, "destroy" does sound less confusing. Let's rename it, assuming it can still remain to be optional as we have here. Thanks Nicolin