Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'iommu-fixes-v6.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu

Pull iommu fixes from Joerg Roedel:

- Fix a regression causing a crash on sysfs access of iommu-group
specific files

- Fix signedness bug in SVA code

* tag 'iommu-fixes-v6.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
iommu/sva: Fix signedness bug in iommu_sva_alloc_pasid()
iommu: Fix crash during syfs iommu_groups/N/type

+18 -16
+2 -1
drivers/iommu/iommu-sva.c
··· 34 34 } 35 35 36 36 ret = ida_alloc_range(&iommu_global_pasid_ida, min, max, GFP_KERNEL); 37 - if (ret < min) 37 + if (ret < 0) 38 38 goto out; 39 + 39 40 mm->pasid = ret; 40 41 ret = 0; 41 42 out:
+16 -15
drivers/iommu/iommu.c
··· 2891 2891 ret = __iommu_group_set_domain_internal( 2892 2892 group, dom, IOMMU_SET_DOMAIN_MUST_SUCCEED); 2893 2893 if (WARN_ON(ret)) 2894 - goto out_free; 2894 + goto out_free_old; 2895 2895 } else { 2896 2896 ret = __iommu_group_set_domain(group, dom); 2897 - if (ret) { 2898 - iommu_domain_free(dom); 2899 - group->default_domain = old_dom; 2900 - return ret; 2901 - } 2897 + if (ret) 2898 + goto err_restore_def_domain; 2902 2899 } 2903 2900 2904 2901 /* ··· 2908 2911 for_each_group_device(group, gdev) { 2909 2912 ret = iommu_create_device_direct_mappings(dom, gdev->dev); 2910 2913 if (ret) 2911 - goto err_restore; 2914 + goto err_restore_domain; 2912 2915 } 2913 2916 } 2914 2917 2915 - err_restore: 2916 - if (old_dom) { 2917 - __iommu_group_set_domain_internal( 2918 - group, old_dom, IOMMU_SET_DOMAIN_MUST_SUCCEED); 2919 - iommu_domain_free(dom); 2920 - old_dom = NULL; 2921 - } 2922 - out_free: 2918 + out_free_old: 2923 2919 if (old_dom) 2924 2920 iommu_domain_free(old_dom); 2921 + return ret; 2922 + 2923 + err_restore_domain: 2924 + if (old_dom) 2925 + __iommu_group_set_domain_internal( 2926 + group, old_dom, IOMMU_SET_DOMAIN_MUST_SUCCEED); 2927 + err_restore_def_domain: 2928 + if (old_dom) { 2929 + iommu_domain_free(dom); 2930 + group->default_domain = old_dom; 2931 + } 2925 2932 return ret; 2926 2933 } 2927 2934