]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Aug 2025 14:28:30 +0000 (16:28 +0200)
commit b23e09f9997771b4b739c1c694fa832b5fa2de02 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/iommu/iommufd/io_pagetable.c

index e76b22939994812f0a05b32d9670a2bf39eb2721..dd58e024664100e2f25780b0055518ce4a2a4c36 100644 (file)
@@ -524,8 +524,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;
                }
 
@@ -547,6 +549,7 @@ again:
 out_unlock_iova:
        up_write(&iopt->iova_rwsem);
        up_read(&iopt->domains_rwsem);
+out_unmapped:
        if (unmapped)
                *unmapped = unmapped_bytes;
        return rc;