]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iommufd: Report unmapped bytes in the error path of iopt_unmap_iova_range
authorNicolin Chen <nicolinc@nvidia.com>
Thu, 10 Jul 2025 05:58:53 +0000 (22:58 -0700)
committerJason Gunthorpe <jgg@nvidia.com>
Thu, 10 Jul 2025 15:38:50 +0000 (12:38 -0300)
There are callers that read the unmapped bytes even when rc != 0. Thus, do
not forget to report it in the error path too.

Fixes: 8d40205f6093 ("iommufd: Add kAPI toward external drivers for kernel access")
Link: https://patch.msgid.link/r/e2b61303bbc008ba1a4e2d7c2a2894749b59fdac.1752126748.git.nicolinc@nvidia.com
Cc: stable@vger.kernel.org
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/iommu/iommufd/io_pagetable.c

index 13d010f19ed19efbbc32f768041e73d87302524f..22fc3a12109f0bb6d8de7f06421dbccd2b1d8b88 100644 (file)
@@ -743,8 +743,10 @@ again:
                        iommufd_access_notify_unmap(iopt, area_first, length);
                        /* Something is not responding to unmap requests. */
                        tries++;
-                       if (WARN_ON(tries > 100))
-                               return -EDEADLOCK;
+                       if (WARN_ON(tries > 100)) {
+                               rc = -EDEADLOCK;
+                               goto out_unmapped;
+                       }
                        goto again;
                }
 
@@ -766,6 +768,7 @@ again:
 out_unlock_iova:
        up_write(&iopt->iova_rwsem);
        up_read(&iopt->domains_rwsem);
+out_unmapped:
        if (unmapped)
                *unmapped = unmapped_bytes;
        return rc;