[PATCH mpam mpam/snapshot+extras/v6.18-rc1 v2 3/3] fs/resctrl: Migrate IOMMU groups when removing resource groups

Zeng Heng zengheng4 at huawei.com
Wed Jul 15 23:41:27 PDT 2026


Hi Lee,

On 2026/7/16 5:35, Lee Trager wrote:
> Hi Zeng,
> 
> Thanks for the series, I found it while backporting MPAM support to 6.18.
> 

You are welcome. Glad it could help you fix the issues you encountered.


> iommu_group_get_from_kobj() returns holding a reference on 
> group->devices_kobj, the one iommu_group_put() releases. The 
> kobject_get() above only compensates for the kobject_put(&group->kobj) 
> done internally by iommu_group_get_from_kobj(). Nothing in this loop 
> ever calls iommu_group_put(), so this leaks one iommu_group reference 
> per group in the kset on every call, e.g on rmdir and every unmount. 
> Since device_kobj pins the group's koject, the leaked groups can never 
> be freed.
> 
> The same pattern exists in show_rdt_iommu() from "fs/resctrl: Add 
> support for assigning iommu_groups to resctrl groups", where it leaks 
> one reference per group on every read of a tasks file.
> 
> There is a second, smaller leak on these break paths: 
> kset_get_next_obj() only drops its reference on the current kobject when 
> it is passed back as @prev on the next iteration, so breaking out of the 
> loop also leaks the group_kobj reference taken by the iterator. I am 
> carrying the fix below:
> 
> if (!from || iommu_matches_rdtgroup(group, from)) {
>      err = kstrtoint(group_kobj->name, 0, &iommu_group_id);
>      if (!err)
>          err = rdtgroup_move_iommu(iommu_group_id, to);
> }
> 
> iommu_group_put(group);
> if (err) {
>      kobject_put(group_kobj);
>      break;
> }
> 
> Thanks,
> 

Thank you for the review. The changes look reasonable to me, and I'll
carry these memory leak fixes into v3.


Best regards,
Zeng Heng



More information about the linux-arm-kernel mailing list