On Tue, Jul 14, 2026 at 09:06:51PM +0800, Zhanpeng Zhang wrote: > Add iommu_group_get_by_id() so callers can resolve an IOMMU group from > the numeric ID used in /sys/kernel/iommu_groups. > > An ID lookup must keep the group object alive without also keeping an > otherwise empty group active. Embed the devices kobject in struct > iommu_group so its address remains valid until the parent group is > released, and return a reference on the parent kobject to ID lookup > callers. Add iommu_group_put_by_id() to release that reference and > iommu_group_is_active() to detect when the devices kobject has become > inactive. > > Serialize lookup against group teardown with iommu_group_kset_mutex and > only return groups whose devices kobject still has a live reference. > This prevents a concurrent lookup from dereferencing a stale child > kobject while allowing external users to discard bindings to empty > groups. > > Signed-off-by: Zhanpeng Zhang <[email protected]> > --- > drivers/iommu/iommu.c | 107 +++++++++++++++++++++++++++++++++++++----- > include/linux/iommu.h | 17 +++++++ > 2 files changed, 113 insertions(+), 11 deletions(-) > > diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c > index e8f13dcebbde..da269d10f6bf 100644 > --- a/drivers/iommu/iommu.c > +++ b/drivers/iommu/iommu.c > @@ -40,6 +40,7 @@ > #include "iommu-priv.h" > > static struct kset *iommu_group_kset; > +static DEFINE_MUTEX(iommu_group_kset_mutex); > static DEFINE_IDA(iommu_group_ida);
I think it would be better to change the ida to an xarray than to use a string search on a kset.. Jason

