• Peng Fan's avatar
    iommu/arm-smmu: Correct group reference count · 9a4a9d8c
    Peng Fan authored
    The basic flow for add a device:
     arm_smmu_add_device
            |->iommu_group_get_for_dev
                |->iommu_group_get
                         return group;  (1)
                |->ops->device_group : Init/increase reference count to/by 1.
                |->iommu_group_add_device : Increase reference count by 1.
    		     return group   (2)
            |->return 0;
    
    Since we are adding one device, the flow is (2) and the group reference
    count will be increased by 2. So, we need to add iommu_group_put at the
    end of arm_smmu_add_device to decrease the count by 1.
    
    Also take the failure path into consideration when fail to add a device.
    Signed-off-by: default avatarPeng Fan <van.freenix@gmail.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    9a4a9d8c
arm-smmu.c 49.8 KB