> From: Nicolin Chen <nicolinc@xxxxxxxxxx> > Sent: Saturday, May 24, 2025 5:35 AM > > On Fri, May 23, 2025 at 07:49:40AM +0000, Tian, Kevin wrote: > > > From: Nicolin Chen <nicolinc@xxxxxxxxxx> > > > Sent: Sunday, May 18, 2025 11:21 AM > > > > > > Now the new ucmd-based object allocator eases the finalize/abort > routine, > > > apply this to all existing allocators that aren't protected by any lock. > > > > > > Upgrade the for-driver vIOMMU alloctor too, and pass down to all > existing > > > viommu_alloc op accordingly. > > > > > > Note that __iommufd_object_alloc_ucmd() builds in some static tests that > > > cover both static_asserts in the iommufd_viommu_alloc(). Thus drop > them. > > > > I may overlook something, but at a quick glance the following check > > Is not covered? > > > > - static_assert(__same_type(struct iommufd_viommu, > \ > > - ((drv_struct *)NULL)->member)); > \ > > The container_of() inside __iommufd_object_alloc_ucmd() covers that: > > #define container_of(ptr, type, member) ({ \ > void *__mptr = (void *)(ptr); \ > static_assert(__same_type(*(ptr), ((type *)0)->member) || \ > <<== here > __same_type(*(ptr), void), \ > "pointer type mismatch in container_of()"); \ > ((type *)(__mptr - offsetof(type, member))); }) Yeah it's there.