Hi Robin,

On 03/01/2018 07:03 PM, Robin Murphy wrote:

+static struct iommu_group *rk_iommu_device_group(struct device *dev)
+{
+    struct rk_iommu *iommu;
+
+    iommu = rk_iommu_from_dev(dev);
+
+    return iommu->group;

Oops, seems I overlooked this in my previous review - it should really be:

     return iommu_group_get(iommu->group);

or the refcounting will be unbalanced on those future systems where it
really will be called more than once.

hmmm, right, it should be return iommu_group_ref_get(iommu->group);

i was following omap iommu:
static struct iommu_group *omap_iommu_device_group(struct device *dev)
{
        struct omap_iommu_arch_data *arch_data = dev->archdata.iommu;
        struct iommu_group *group = ERR_PTR(-EINVAL);

        if (arch_data->iommu_dev)
                group = arch_data->iommu_dev->group;

        return group;
}

will fix it too in the version.

Robin.


Reply via email to